Mercurial > emacs
annotate src/mac.c @ 94293:ca9efc5939fc
Merge from emacs--rel--22
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1121
author | Miles Bader <miles@gnu.org> |
---|---|
date | Wed, 23 Apr 2008 05:55:42 +0000 |
parents | 3af508d0bd74 e58dfb854c06 |
children | 8971ddf55736 |
rev | line source |
---|---|
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1 /* Unix emulation routines for GNU Emacs on the Mac OS. |
64770
a0d1312ede66
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64604
diff
changeset
|
2 Copyright (C) 2000, 2001, 2002, 2003, 2004, |
79759 | 3 2005, 2006, 2007, 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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
7 GNU Emacs is free software; you can redistribute it and/or modify |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
8 it under the terms of the GNU General Public License as published by |
78260
922696f363b0
Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents:
77308
diff
changeset
|
9 the Free Software Foundation; either version 3, or (at your option) |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
10 any later version. |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
11 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
12 GNU Emacs is distributed in the hope that it will be useful, |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
15 GNU General Public License for more details. |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
16 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
18 along with GNU Emacs; see the file COPYING. If not, write to |
64084 | 19 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
20 Boston, MA 02110-1301, USA. */ | |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
21 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
22 /* Contributed by Andrew Choi (akochoi@mac.com). */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
23 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
24 #include <config.h> |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
25 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
26 #include <stdio.h> |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
27 #include <errno.h> |
60360
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
28 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
29 #include "lisp.h" |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
30 #include "process.h" |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
31 #ifdef MAC_OSX |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
32 #undef select |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
33 #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
|
34 #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
|
35 #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
|
36 #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
|
37 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
38 #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
|
39 |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
40 #include "charset.h" |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
41 #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
|
42 #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
|
43 #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
|
44 #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
|
45 #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
|
46 #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
|
47 #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
|
48 #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
|
49 #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
|
50 #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
|
51 #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
|
52 #include <Events.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
53 #include <Processes.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
54 #include <EPPC.h> |
61553
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
55 #include <MacLocales.h> |
64247
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
56 #include <Endian.h> |
61785
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
57 #endif /* not TARGET_API_MAC_CARBON */ |
60360
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
58 |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
59 #include <utime.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
60 #include <dirent.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
61 #include <sys/types.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
62 #include <sys/stat.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
63 #include <pwd.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
64 #include <grp.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
65 #include <sys/param.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
66 #include <fcntl.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
67 #if __MWERKS__ |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
68 #include <unistd.h> |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
69 #endif |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
70 |
61553
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
71 /* The system script code. */ |
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
72 static int mac_system_script_code; |
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
73 |
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
74 /* The system locale identifier string. */ |
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
75 static Lisp_Object Vmac_system_locale; |
72c95a1c84c6
[!TARGET_API_MAC_CARBON]: Include MacLocales.h. Don't include
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61338
diff
changeset
|
76 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
77 /* An instance of the AppleScript component. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
78 static ComponentInstance as_scripting_component; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
79 /* The single script context used for all script executions. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
80 static OSAID as_script_context; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
81 |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
82 #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
|
83 #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
|
84 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
|
85 #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
|
86 #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
|
87 #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
|
88 #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
|
89 #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
|
90 #endif |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
91 #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
|
92 |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
93 #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
|
94 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
|
95 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
|
96 #endif |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
97 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
98 /* 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
|
99 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
|
100 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
|
101 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
|
102 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
103 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
104 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
|
105 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
106 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
|
107 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
|
108 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
|
109 int i; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
110 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
111 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
|
112 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
|
113 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
114 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
|
115 *p = b; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
116 p++; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
120 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
121 /* 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
|
122 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
|
123 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
|
124 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
|
125 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
|
126 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
|
127 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
|
128 Returns 1 if successful; 0 if fails. */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
129 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
130 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
131 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
|
132 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
133 const char *p, *q, *pe; |
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 strcpy (ufn, ""); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
136 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
137 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
|
138 return 1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
139 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
140 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
|
141 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
|
142 strcat (ufn, "/"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
143 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
144 p = mfn; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
145 if (*p == ':') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
146 p++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
147 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
148 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
|
149 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
|
150 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
151 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
|
152 if (q) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
153 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
154 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
|
155 { /* two consecutive ':' */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
156 if (strlen (ufn) + 3 >= ufnbuflen) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
157 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
158 strcat (ufn, "../"); |
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 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
161 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
162 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
|
163 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
164 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
|
165 strcat (ufn, "/"); |
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 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
|
168 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
169 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
170 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
171 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
|
172 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
173 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
|
174 /* 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
|
175 p = pe; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
176 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
177 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
178 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
179 return 1; |
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 |
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 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
|
184 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
185 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
186 /* 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
|
187 above in algorithm. */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
188 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
189 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
190 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
|
191 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
192 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
|
193 char expanded_pathname[MAXPATHLEN+1]; |
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 strcpy (mfn, ""); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
196 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
197 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
|
198 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
199 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
200 p = ufn; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
201 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
202 /* 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
|
203 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
|
204 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
|
205 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
206 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
|
207 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
208 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
|
209 strcat (mfn, ":"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
210 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
211 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
212 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
213 /* 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
|
214 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
|
215 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
216 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
|
217 p += 7; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
218 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
|
219 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
220 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
|
221 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
|
222 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
|
223 /* 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
|
224 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
225 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
|
226 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
227 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
|
228 p += 5; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
229 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
|
230 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
231 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
|
232 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
|
233 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
|
234 /* 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
|
235 } |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
236 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
|
237 strcat (mfn, ":"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
238 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
239 if (*p == '/') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
240 p++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
241 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
242 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
|
243 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
|
244 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
245 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
|
246 if (q) |
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 (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
|
249 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
250 if (strlen (mfn) + 1 >= mfnbuflen) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
251 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
252 strcat (mfn, ":"); |
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 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
255 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
256 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
|
257 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
258 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
|
259 strcat (mfn, ":"); |
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 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
|
262 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
263 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
264 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
265 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
|
266 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
267 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
|
268 p = pe; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
269 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
270 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
271 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
272 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
273 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
274 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
275 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
276 /*********************************************************************** |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
277 Conversions on Apple event objects |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
278 ***********************************************************************/ |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
279 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
280 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
|
281 |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
282 static struct { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
283 AEKeyword keyword; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
284 char *name; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
285 Lisp_Object symbol; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
286 } ae_attr_table [] = |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
287 {{keyTransactionIDAttr, "transaction-id"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
288 {keyReturnIDAttr, "return-id"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
289 {keyEventClassAttr, "event-class"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
290 {keyEventIDAttr, "event-id"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
291 {keyAddressAttr, "address"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
292 {keyOptionalKeywordAttr, "optional-keyword"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
293 {keyTimeoutAttr, "timeout"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
294 {keyInteractLevelAttr, "interact-level"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
295 {keyEventSourceAttr, "event-source"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
296 /* {keyMissedKeywordAttr, "missed-keyword"}, */ |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
297 {keyOriginalAddressAttr, "original-address"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
298 {keyReplyRequestedAttr, "reply-requested"}, |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
299 {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
|
300 }; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
301 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
302 static Lisp_Object |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
303 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
|
304 const AEDescList *desc_list; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
305 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
306 OSErr err; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
307 long count; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
308 Lisp_Object result, elem; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
309 DescType desc_type; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
310 Size size; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
311 AEKeyword keyword; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
312 AEDesc desc; |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
313 int attribute_p = 0; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
314 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
315 err = AECountItems (desc_list, &count); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
316 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
317 return Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
318 result = Qnil; |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
319 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
320 again: |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
321 while (count > 0) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
322 { |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
323 if (attribute_p) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
324 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
325 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
|
326 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
|
327 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
328 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
329 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
|
330 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
331 if (err == noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
332 switch (desc_type) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
333 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
334 case typeAEList: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
335 case typeAERecord: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
336 case typeAppleEvent: |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
337 if (attribute_p) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
338 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
|
339 &desc); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
340 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
341 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
|
342 &keyword, &desc); |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
343 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
344 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
345 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
|
346 AEDisposeDesc (&desc); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
347 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
348 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
349 default: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
350 if (desc_type == typeNull) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
351 elem = Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
352 else |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
353 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
354 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
|
355 if (attribute_p) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
356 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
|
357 &desc_type, SDATA (elem), |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
358 size, &size); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
359 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
360 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
|
361 &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
|
362 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
363 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
364 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
365 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
|
366 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
|
367 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
368 } |
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 || desc_list->descriptorType == typeAEList) |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
371 { |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
372 if (err != noErr) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
373 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
|
374 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
|
375 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
376 if (attribute_p) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
377 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
|
378 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
379 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
380 keyword = EndianU32_NtoB (keyword); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
381 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
|
382 elem); |
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 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
385 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
386 result = Fcons (elem, result); |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
387 } |
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 count--; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
390 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
391 |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
392 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
|
393 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
394 attribute_p = 1; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
395 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
|
396 goto again; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
397 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
398 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
399 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
|
400 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
|
401 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
402 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
403 Lisp_Object |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
404 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
|
405 const AEDesc *desc; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
406 { |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
407 OSErr err = noErr; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
408 DescType desc_type = desc->descriptorType; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
409 Lisp_Object result; |
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 switch (desc_type) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
412 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
413 case typeNull: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
414 result = Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
415 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
416 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
417 case typeAEList: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
418 case typeAERecord: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
419 case typeAppleEvent: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
420 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
|
421 #if 0 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
422 /* 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
|
423 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
|
424 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
425 long count; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
426 Lisp_Object elem; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
427 AEKeyword keyword; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
428 AEDesc desc1; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
429 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
430 err = AECountItems (desc, &count); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
431 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
432 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
433 result = Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
434 while (count > 0) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
435 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
436 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
|
437 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
438 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
439 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
|
440 AEDisposeDesc (&desc1); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
441 if (desc_type != typeAEList) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
442 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
443 keyword = EndianU32_NtoB (keyword); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
444 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
|
445 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
446 result = Fcons (elem, result); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
447 count--; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
448 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
449 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
450 #endif |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
451 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
452 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
453 default: |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
454 #if TARGET_API_MAC_CARBON |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
455 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
|
456 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
|
457 #else |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
458 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
|
459 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
|
460 #endif |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
461 break; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
462 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
463 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
464 if (err != noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
465 return Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
466 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
467 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
|
468 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
|
469 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
470 |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
471 OSErr |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
472 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
|
473 AEDescList *desc; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
474 UInt32 keyword_or_index; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
475 Lisp_Object obj; |
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 OSErr err; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
478 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
479 if (!(desc->descriptorType == typeAppleEvent |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
480 || desc->descriptorType == typeAERecord |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
481 || desc->descriptorType == typeAEList)) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
482 return errAEWrongDataType; |
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 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
|
485 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
486 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
|
487 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
|
488 AEDesc desc1; |
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 switch (desc_type1) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
491 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
492 case typeNull: |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
493 case typeAppleEvent: |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
494 break; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
495 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
496 case typeAEList: |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
497 case typeAERecord: |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
498 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
|
499 if (err == noErr) |
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 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
|
502 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
503 UInt32 keyword_or_index1 = 0; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
504 Lisp_Object elem = XCAR (rest); |
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 (desc_type1 == typeAERecord) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
507 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
508 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
|
509 && SBYTES (XCAR (elem)) == 4) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
510 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
511 keyword_or_index1 = |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
512 EndianU32_BtoN (*((UInt32 *) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
513 SDATA (XCAR (elem)))); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
514 elem = XCDR (elem); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
515 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
516 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
517 continue; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
518 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
519 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
520 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
|
521 if (err != noErr) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
522 break; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
523 } |
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 (err == noErr) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
526 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
527 if (desc->descriptorType == typeAEList) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
528 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
|
529 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
530 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
|
531 } |
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 AEDisposeDesc (&desc1); |
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 return err; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
536 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
537 default: |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
538 if (!STRINGP (data)) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
539 break; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
540 if (desc->descriptorType == typeAEList) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
541 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
|
542 SDATA (data), SBYTES (data)); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
543 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
544 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
|
545 SDATA (data), SBYTES (data)); |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
546 return err; |
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 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
549 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
550 if (desc->descriptorType == typeAEList) |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
551 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
|
552 else |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
553 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
|
554 |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
555 return err; |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
556 } |
70987
f85bcca39940
Tiny layout change.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70871
diff
changeset
|
557 |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
558 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
|
559 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
|
560 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
|
561 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
|
562 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
|
563 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
|
564 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
|
565 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
|
566 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
|
567 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
568 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
|
569 |
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
|
570 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
|
571 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
|
572 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
|
573 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
|
574 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
|
575 /* 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
|
576 { |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
577 #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
|
578 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
|
579 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
|
580 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
|
581 |
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 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
|
583 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
|
584 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
|
585 { |
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 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
|
587 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
|
588 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
|
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 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
|
591 { |
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 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
|
593 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
|
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 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
|
596 { |
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 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
|
598 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
|
599 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
|
600 } |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
601 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
|
602 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
|
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 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
|
605 { |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
606 /* 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
|
607 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
|
608 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
|
609 |
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 = 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
|
611 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
|
612 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
|
613 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
|
614 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
|
615 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
|
616 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
|
617 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
|
618 } |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
619 #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
|
620 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
|
621 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
|
622 |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
623 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
|
624 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
|
625 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
|
626 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
|
627 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
|
628 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
|
629 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
|
630 #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
|
631 } |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
632 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
|
633 /* 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
|
634 { |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
635 #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
|
636 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
|
637 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
|
638 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
|
639 |
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 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
|
641 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
|
642 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
|
643 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
|
644 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
645 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
|
646 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
|
647 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
|
648 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
649 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
|
650 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
|
651 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
|
652 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
653 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
|
654 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
|
655 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
|
656 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
|
657 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
|
658 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
|
659 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
|
660 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
|
661 } |
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
|
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 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
|
664 { |
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 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
|
666 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
|
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 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
|
669 { |
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 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
|
671 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
|
672 '\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
|
673 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
|
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 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
|
676 { |
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 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
|
678 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
|
679 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
|
680 } |
70301
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 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
|
683 { |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
684 /* 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
|
685 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
|
686 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
|
687 |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
688 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
|
689 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
|
690 else |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
691 { |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
692 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
|
693 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
|
694 |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
695 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
|
696 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
|
697 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
|
698 { |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
699 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
|
700 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
|
701 } |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
702 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
|
703 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
|
704 } |
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
705 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
|
706 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
|
707 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
|
708 } |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
709 #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
|
710 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
|
711 |
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 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
|
713 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
|
714 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
|
715 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
|
716 { |
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 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
|
718 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
|
719 |
e70c943e7ff3
(mac_coerce_file_name_ptr, mac_coerce_file_name_desc):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67786
diff
changeset
|
720 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
|
721 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
|
722 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
723 #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
|
724 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
|
725 #else |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
726 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
|
727 #endif |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
728 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
|
729 } |
70301
9547c2b60f39
(mac_coerce_file_name_ptr): Try typeFSRef if coercion
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70069
diff
changeset
|
730 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
|
731 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
|
732 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
|
733 } |
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 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
|
735 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
|
736 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
|
737 #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
|
738 } |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
739 else |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
740 abort (); |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
741 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
742 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
|
743 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
|
744 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
|
745 } |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
746 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
747 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
|
748 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
|
749 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
|
750 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
|
751 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
|
752 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
|
753 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
754 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
|
755 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
|
756 |
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
|
757 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
|
758 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
|
759 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
|
760 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
|
761 else |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
762 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
763 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
|
764 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
|
765 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
766 #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
|
767 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
|
768 #else |
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_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
|
770 #endif |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
771 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
|
772 #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
|
773 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
|
774 #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
|
775 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
|
776 #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
|
777 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
|
778 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
|
779 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
|
780 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
|
781 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
|
782 } |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
783 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
784 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
|
785 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
|
786 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
|
787 } |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
788 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
789 OSErr |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
790 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
|
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 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
|
793 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
794 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
|
795 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
|
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 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
|
798 { |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
799 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
|
800 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
|
801 } |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
802 |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
803 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
|
804 (AECoercionHandlerUPP) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
805 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
|
806 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
|
807 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
|
808 (AECoercionHandlerUPP) |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
809 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
|
810 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
|
811 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
|
812 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
|
813 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
|
814 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
|
815 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
|
816 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
|
817 } |
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
818 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
819 #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
|
820 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
|
821 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
|
822 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
|
823 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
|
824 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
|
825 { |
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 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
|
827 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
|
828 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
|
829 |
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 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
|
831 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
|
832 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
|
833 { |
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 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
|
835 &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
|
836 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
|
837 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
|
838 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
|
839 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
|
840 } |
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 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
|
843 } |
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
|
844 |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
845 Lisp_Object |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
846 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
|
847 EventRef event; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
848 UInt32 num_params; |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
849 const EventParamName *names; |
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
850 const EventParamType *types; |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
851 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
852 OSStatus err; |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
853 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
|
854 UInt32 i; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
855 ByteCount size; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
856 #ifdef MAC_OSX |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
857 CFStringRef string; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
858 CFDataRef data; |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
859 #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
|
860 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
|
861 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
862 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
|
863 { |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
864 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
|
865 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
|
866 |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
867 switch (type) |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
868 { |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
869 #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
|
870 case typeCFStringRef: |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
871 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
|
872 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
|
873 if (err != noErr) |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
874 break; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
875 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
|
876 kCFStringEncodingUTF8, |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
877 '?'); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
878 if (data == NULL) |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
879 break; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
880 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
|
881 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
|
882 result = |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
883 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
|
884 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
|
885 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
|
886 CFDataGetLength (data)))), |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
887 result); |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
888 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
|
889 break; |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
890 #endif |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
891 |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
892 default: |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
893 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
|
894 if (err != noErr) |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
895 break; |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
896 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
|
897 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
|
898 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
|
899 { |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
900 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
|
901 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
|
902 result = |
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
903 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
|
904 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
|
905 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
|
906 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
|
907 } |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
908 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
|
909 } |
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 } |
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 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
|
912 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
|
913 |
80513
e58dfb854c06
(create_apple_event) [TARGET_API_MAC_CARBON]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80450
diff
changeset
|
914 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
|
915 } |
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
|
916 #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
|
917 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
918 /*********************************************************************** |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
919 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
|
920 ***********************************************************************/ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
921 |
58752
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
922 #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
|
923 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
|
924 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
|
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 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
|
927 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
928 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
|
929 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
|
930 }; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
931 |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
932 /* 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
|
933 |
58752
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
934 CFStringRef |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
935 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
|
936 const char *c_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 CFStringRef str; |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
939 |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
940 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
|
941 if (str == NULL) |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
942 /* 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
|
943 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
|
944 |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
945 return str; |
4ad0594e1ac4
* macterm.h (cfstring_create_with_utf8_cstring): Added prototype.
Steven Tamm <steventamm@mac.com>
parents:
57425
diff
changeset
|
946 } |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
947 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
948 |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
949 /* Lisp string to CFString. */ |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
950 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
951 CFStringRef |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
952 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
|
953 Lisp_Object s; |
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 CFStringRef string = NULL; |
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 if (STRING_MULTIBYTE (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 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
|
960 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
961 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
|
962 if (!isascii (*p)) |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
963 { |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
964 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
|
965 break; |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
966 } |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
967 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
|
968 kCFStringEncodingUTF8, false); |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
969 } |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
970 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
971 if (string == NULL) |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
972 /* 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
|
973 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
|
974 kCFStringEncodingMacRoman, false); |
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 return string; |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
977 } |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
978 |
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
979 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
980 /* 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
|
981 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
982 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
|
983 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
|
984 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
|
985 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
986 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
|
987 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
|
988 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
989 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
|
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 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
|
992 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
993 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
994 |
67088
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
995 /* 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
|
996 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
|
997 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
998 Lisp_Object |
67088
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
999 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
|
1000 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
|
1001 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1002 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
|
1003 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
|
1004 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1005 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
|
1006 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
|
1007 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1008 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1009 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
|
1010 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
|
1011 kCFStringEncodingUTF8, '?'); |
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 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
|
1014 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1015 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
|
1016 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
|
1017 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1018 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1019 |
67088
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1020 return result; |
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 |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1023 |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1024 /* 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
|
1025 (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
|
1026 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
|
1027 |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1028 Lisp_Object |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1029 cfstring_to_lisp (string) |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1030 CFStringRef string; |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1031 { |
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1032 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
|
1033 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1034 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
|
1035 { |
67088
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1036 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
|
1037 /* 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
|
1038 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
|
1039 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
|
1040 } |
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 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
|
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 |
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 /* 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
|
1047 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1048 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
|
1049 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
|
1050 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
|
1051 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1052 Lisp_Object result = Qnil; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1053 #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
|
1054 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
|
1055 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
|
1056 #else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1057 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
|
1058 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
|
1059 #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
|
1060 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
|
1061 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1062 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
|
1063 && !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
|
1064 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
|
1065 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1066 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
|
1067 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
|
1068 return result; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1069 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1070 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1071 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1072 /* 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
|
1073 `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
|
1074 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1075 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
|
1076 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
|
1077 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
|
1078 { |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
1079 CFTimeInterval sec; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
1080 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
|
1081 |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
1082 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
|
1083 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
|
1084 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
|
1085 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
|
1086 |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
1087 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
|
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 |
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 /* 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
|
1092 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1093 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
|
1094 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
|
1095 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
|
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 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
|
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 |
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 /* 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
|
1102 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1103 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
|
1104 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
|
1105 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
|
1106 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1107 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
|
1108 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
|
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 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
|
1111 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1112 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
|
1113 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
|
1114 } |
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 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
|
1117 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1118 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1119 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1120 /* 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
|
1121 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1122 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
|
1123 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
|
1124 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
|
1125 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
|
1126 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
|
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 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
|
1129 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1130 *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
|
1131 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
|
1132 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
|
1133 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
|
1134 *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
|
1135 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1136 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1137 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
|
1138 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
|
1139 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
|
1140 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
|
1141 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
|
1142 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1143 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
|
1144 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
|
1145 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
|
1146 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
|
1147 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1148 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
|
1149 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
|
1150 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
|
1151 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
|
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 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1154 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1155 /* 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
|
1156 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
|
1157 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
|
1158 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
|
1159 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
|
1160 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
|
1161 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
|
1162 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
|
1163 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1164 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
|
1165 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
|
1166 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
|
1167 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
|
1168 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1169 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
|
1170 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
|
1171 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
|
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 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
|
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 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
|
1176 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1177 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
|
1178 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
|
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 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
|
1181 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1182 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
|
1183 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
|
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 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
|
1186 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1187 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
|
1188 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
|
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 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
|
1191 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1192 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
|
1193 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
|
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 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
|
1196 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1197 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
|
1198 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
|
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 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
|
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 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
|
1203 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1204 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
|
1205 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
|
1206 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
|
1207 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
|
1208 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
|
1209 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
|
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 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
|
1212 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1213 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
|
1214 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
|
1215 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1216 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
|
1217 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
|
1218 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
|
1219 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
|
1220 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
|
1221 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1222 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
|
1223 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
|
1224 &context); |
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 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1227 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1228 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
|
1229 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
|
1230 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
|
1231 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
|
1232 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
|
1233 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
|
1234 &context); |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1235 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1236 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1237 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1238 abort (); |
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 UNGCPRO; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1241 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1242 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
|
1243 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
|
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 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
|
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 #endif |
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 |
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 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
|
1252 ***********************************************************************/ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1253 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1254 /* 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
|
1255 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
|
1256 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
|
1257 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
|
1258 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1259 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
|
1260 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
|
1261 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
|
1262 (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
|
1263 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
|
1264 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
|
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 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
|
1267 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1268 #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
|
1269 #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
|
1270 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1271 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
|
1272 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
|
1273 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
|
1274 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1275 /* 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
|
1276 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
|
1277 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1278 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1279 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1280 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
|
1281 parse_comment (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1282 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
|
1283 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1284 /* 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
|
1285 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
|
1286 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1287 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1288 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
|
1289 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
|
1290 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1291 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
|
1292 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1293 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1294 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
|
1295 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1296 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1297 /* 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
|
1298 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
|
1299 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
|
1300 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
|
1301 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1302 /* 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
|
1303 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
|
1304 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1305 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1306 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
|
1307 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
|
1308 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1309 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
|
1310 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1311 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1312 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
|
1313 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1314 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1315 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
|
1316 parse_binding (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1317 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
|
1318 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1319 /* Binding = "." | "*" */ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1320 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
|
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 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
|
1323 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1324 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
|
1325 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
|
1326 binding = '*'; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1327 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
|
1328 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1329 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1330 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
|
1331 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1332 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1333 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
|
1334 parse_component (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1335 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
|
1336 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1337 /* 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
|
1338 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
|
1339 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
|
1340 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
|
1341 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1342 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1343 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
|
1344 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1345 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
|
1346 { |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1347 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
|
1348 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1349 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
|
1350 P++; |
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 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
|
1353 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1354 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1355 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
|
1356 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1357 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1358 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
|
1359 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
|
1360 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
|
1361 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1362 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
|
1363 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
|
1364 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1365 /* 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
|
1366 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
|
1367 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
|
1368 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1369 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
|
1370 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
|
1371 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
|
1372 |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1373 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
|
1374 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
|
1375 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1376 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
|
1377 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
|
1378 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
|
1379 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
|
1380 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
|
1381 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1382 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
|
1383 } |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1384 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1385 /* 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
|
1386 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
|
1387 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
|
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 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
|
1390 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1391 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1392 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
|
1393 parse_value (p) |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1394 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
|
1395 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1396 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
|
1397 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
|
1398 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
|
1399 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1400 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
|
1401 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
|
1402 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
|
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 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
|
1405 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1406 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
|
1407 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
|
1408 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
|
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 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
|
1411 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1412 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1413 break; |
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 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
|
1416 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1417 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1418 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
|
1419 break; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1420 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
|
1421 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1422 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1423 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
|
1424 break; |
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 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
|
1427 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1428 *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
|
1429 P++; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1430 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1431 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
|
1432 && '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
|
1433 && '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
|
1434 { |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
1435 *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
|
1436 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
|
1437 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1438 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1439 *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
|
1440 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1441 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1442 *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
|
1443 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1444 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
|
1445 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
|
1446 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
|
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 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
|
1449 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1450 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
|
1451 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
|
1452 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
|
1453 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1454 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
|
1455 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
|
1456 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
|
1457 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1458 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1459 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1460 break; |
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 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
|
1463 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1464 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
|
1465 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
|
1466 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1467 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1468 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
|
1469 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
|
1470 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
|
1471 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1472 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
|
1473 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
|
1474 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
|
1475 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1476 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
|
1477 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
|
1478 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
|
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 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1481 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1482 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
|
1483 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
|
1484 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
|
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 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
|
1487 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1488 /* 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
|
1489 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
|
1490 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
|
1491 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1492 /* 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
|
1493 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
|
1494 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
|
1495 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
|
1496 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
|
1497 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
|
1498 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
|
1499 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
|
1500 P++; |
60640
7dd25916c6bb
Fix typo (skip_while_space -> skip_white_space).
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60632
diff
changeset
|
1501 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
|
1502 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
|
1503 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
|
1504 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1505 cleanup: |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1506 /* 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
|
1507 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
|
1508 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
|
1509 } |
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 #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
|
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 /* 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
|
1514 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1515 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
|
1516 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
|
1517 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
|
1518 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
|
1519 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
|
1520 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
|
1521 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
|
1522 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
|
1523 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
|
1524 |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1525 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
|
1526 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
|
1527 "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
|
1528 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1529 #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
|
1530 #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
|
1531 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1532 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
|
1533 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
|
1534 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1535 XrmDatabase database; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1536 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1537 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
|
1538 make_float (DEFAULT_REHASH_SIZE), |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1539 make_float (DEFAULT_REHASH_THRESHOLD), |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1540 Qnil, Qnil, Qnil); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1541 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
|
1542 Fputhash (HASHKEY_QUERY_CACHE, Qnil, database); |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1543 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1544 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
|
1545 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1546 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1547 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
|
1548 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
|
1549 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
|
1550 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
|
1551 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1552 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
|
1553 unsigned hash_code; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1554 int max_nid, i; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1555 Lisp_Object node_id, key; |
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 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
|
1558 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1559 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
|
1560 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
|
1561 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1562 key = Fcons (node_id, XCAR (quarks)); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1563 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
|
1564 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
|
1565 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1566 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
|
1567 XSETINT (node_id, max_nid); |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1568 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
|
1569 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1570 else |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1571 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
|
1572 } |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1573 Fputhash (node_id, value, database); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1574 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1575 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
|
1576 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
|
1577 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1578 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1579 /* 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
|
1580 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
|
1581 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
|
1582 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
|
1583 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1584 void |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1585 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
|
1586 XrmDatabase database; |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1587 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
|
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 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
|
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 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
|
1592 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1593 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
|
1594 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
|
1595 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
|
1596 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
|
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 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1599 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1600 static Lisp_Object |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1601 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
|
1602 XrmDatabase database; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1603 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
|
1604 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1605 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
|
1606 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
|
1607 int i, k; |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1608 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1609 if (!CONSP (quark_name)) |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1610 return Fgethash (node_id, database, Qnil); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1611 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1612 /* First, try tight bindings */ |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1613 labels[0] = XCAR (quark_name); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1614 labels[1] = XCAR (quark_class); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1615 labels[2] = SINGLE_COMPONENT; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1616 |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1617 key = Fcons (node_id, Qnil); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1618 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
|
1619 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1620 XSETCDR (key, labels[k]); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1621 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
|
1622 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
|
1623 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1624 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
|
1625 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
|
1626 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
|
1627 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
|
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 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1630 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1631 /* Then, try loose bindings */ |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1632 XSETCDR (key, LOOSE_BINDING); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1633 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
|
1634 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
|
1635 { |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1636 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
|
1637 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
|
1638 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
|
1639 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
|
1640 else |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1641 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
|
1642 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
|
1643 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1644 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1645 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
|
1646 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1647 |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1648 static Lisp_Object |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1649 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
|
1650 XrmDatabase database; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1651 Lisp_Object quark_name, quark_class; |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1652 { |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1653 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
|
1654 quark_name, quark_class); |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1655 } |
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1656 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1657 /* 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
|
1658 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
|
1659 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1660 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
|
1661 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
|
1662 XrmDatabase database; |
73571
fbd883b271ad
(create_apple_event_from_event_ref)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73384
diff
changeset
|
1663 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
|
1664 { |
66879
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1665 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
|
1666 int i, nn, nc; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1667 struct Lisp_Hash_Table *h; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1668 unsigned hash_code; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1669 |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1670 nn = strlen (name); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1671 nc = strlen (class); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1672 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
|
1673 strcpy (SDATA (key), name); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1674 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
|
1675 |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1676 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
|
1677 if (NILP (query_cache)) |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1678 { |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1679 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
|
1680 make_float (DEFAULT_REHASH_SIZE), |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1681 make_float (DEFAULT_REHASH_THRESHOLD), |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1682 Qnil, Qnil, Qnil); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1683 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
|
1684 } |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1685 h = XHASH_TABLE (query_cache); |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1686 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
|
1687 if (i >= 0) |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1688 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
|
1689 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1690 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
|
1691 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
|
1692 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
|
1693 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
|
1694 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
|
1695 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
|
1696 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1697 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
|
1698 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
|
1699 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
|
1700 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
|
1701 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
|
1702 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
|
1703 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1704 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
|
1705 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
|
1706 else |
66879
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1707 { |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1708 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
|
1709 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
|
1710 return tmp; |
6a3a5a23008d
(HASHKEY_QUERY_CACHE): New define.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66763
diff
changeset
|
1711 } |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1712 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1713 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1714 #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
|
1715 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
|
1716 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
|
1717 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
|
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 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
|
1720 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1721 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
|
1722 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
|
1723 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
|
1724 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1725 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
|
1726 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
|
1727 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1728 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
|
1729 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
|
1730 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1731 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
|
1732 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
|
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 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
|
1735 } |
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 == CFBooleanGetTypeID ()) |
60660
40fe172d199c
(HASHKEY_TERMINAL): Remove.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60640
diff
changeset
|
1737 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
|
1738 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
|
1739 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
|
1740 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1741 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
|
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 #endif |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1744 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1745 /* 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
|
1746 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
|
1747 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
|
1748 application. */ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1749 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1750 XrmDatabase |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1751 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
|
1752 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
|
1753 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1754 #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
|
1755 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
|
1756 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
|
1757 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
|
1758 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
|
1759 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
|
1760 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
|
1761 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
|
1762 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
|
1763 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
|
1764 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
|
1765 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1766 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
|
1767 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
|
1768 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
|
1769 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
|
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 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
|
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 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
|
1774 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1775 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
|
1776 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
|
1777 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1778 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
|
1779 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
|
1780 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
|
1781 } |
77140
f9e6e90b6141
(xrm_get_preference_database, Fmac_get_preference)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
1782 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
|
1783 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
|
1784 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1785 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
|
1786 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
|
1787 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
|
1788 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
|
1789 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
|
1790 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1791 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
|
1792 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
|
1793 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
|
1794 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1795 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
|
1796 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
|
1797 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
|
1798 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
|
1799 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
|
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 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1802 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1803 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
|
1804 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
|
1805 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
|
1806 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
|
1807 { |
67088
5e6f93897afb
(DECODE_UTF_8): Remove macro.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66879
diff
changeset
|
1808 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
|
1809 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
|
1810 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
|
1811 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1812 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
|
1813 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
|
1814 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
|
1815 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
|
1816 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
|
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 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1819 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1820 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
|
1821 out: |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1822 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
|
1823 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
|
1824 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
|
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 UNGCPRO; |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1827 |
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 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 #else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1830 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
|
1831 #endif |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1832 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1833 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
1834 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1835 #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
|
1836 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1837 /* 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
|
1838 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
|
1839 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
|
1840 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
|
1841 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
|
1842 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1843 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1844 /* 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
|
1845 + 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
|
1846 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
|
1847 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1848 #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
|
1849 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1850 #ifdef __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1851 #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
|
1852 /* 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
|
1853 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
|
1854 functions. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1855 #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
|
1856 #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
|
1857 /* 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
|
1858 #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
|
1859 #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
|
1860 #elif __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1861 /* 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
|
1862 #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
|
1863 #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
|
1864 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1865 #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
|
1866 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1867 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1868 /* 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
|
1869 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
|
1870 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
|
1871 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
|
1872 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
|
1873 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
|
1874 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1875 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1876 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
|
1877 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1878 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
|
1879 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1880 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1881 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
|
1882 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1883 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1884 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
|
1885 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
|
1886 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
|
1887 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
|
1888 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
|
1889 /* 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
|
1890 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1891 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
|
1892 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
|
1893 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1894 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
|
1895 return -1; |
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 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
|
1898 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1899 buf->st_mode = S_IFDIR | S_IREAD | S_IEXEC; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1900 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1901 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
|
1902 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
|
1903 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
|
1904 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
|
1905 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
|
1906 /* 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
|
1907 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
|
1908 = 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
|
1909 = 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
|
1910 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
|
1911 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1912 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1913 { |
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_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
|
1915 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
|
1916 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
|
1917 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
|
1918 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
|
1919 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
|
1920 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
|
1921 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
|
1922 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
|
1923 = 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
|
1924 = 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
|
1925 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
|
1926 } |
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 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
|
1929 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1930 /* 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
|
1931 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
|
1932 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
|
1933 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1934 |
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_nlink = 1; |
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_uid = getuid (); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1937 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
|
1938 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
|
1939 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1940 return 0; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1943 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1944 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1945 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
|
1946 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1947 int result; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1948 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
|
1949 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1950 /* 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
|
1951 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
|
1952 return result; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1953 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1954 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
|
1955 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1956 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1957 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
|
1958 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1959 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1960 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1961 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1962 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
|
1963 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1964 int result; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1965 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
|
1966 int len; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1967 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1968 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
|
1969 ! (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
|
1970 return result; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1971 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1972 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
|
1973 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
1974 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1975 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
|
1976 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
|
1977 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1978 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
|
1979 /* 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
|
1980 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
|
1981 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1982 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1983 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
|
1984 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1985 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1986 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1987 #if __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1988 /* 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
|
1989 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
|
1990 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
|
1991 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
|
1992 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
|
1993 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
|
1994 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
|
1995 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
|
1996 improvement. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1997 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1998 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
1999 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
|
2000 { |
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_dev = 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2002 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
|
2003 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
|
2004 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
|
2005 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2006 #endif /* __MRC__ */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2007 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2008 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2009 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2010 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
|
2011 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2012 #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
|
2013 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2014 HFileParam hfpb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2015 char true_pathname[MAXPATHLEN+1], mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2016 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2017 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
|
2018 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2019 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2020 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
|
2021 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2022 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2023 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
|
2024 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
|
2025 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
|
2026 hfpb.ioDirID = 0; /* parent is the root */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2027 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2028 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
|
2029 /* 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
|
2030 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
|
2031 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2032 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2033 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2034 #undef rmdir |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2035 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
|
2036 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2037 HFileParam hfpb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2038 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2039 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2040 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
|
2041 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2042 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2043 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
|
2044 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
|
2045 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
|
2046 hfpb.ioDirID = 0; /* parent is the root */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2047 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2048 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
|
2049 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
|
2050 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2051 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2052 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2053 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2054 /* 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
|
2055 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2056 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
|
2057 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2058 return -1; |
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 #endif /* __MRC__ */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2061 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2062 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2063 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2064 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
|
2065 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2066 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
|
2067 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2068 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
|
2069 CInfoPBRec cipb; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2070 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2071 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
|
2072 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2073 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2074 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
|
2075 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
|
2076 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
|
2077 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2078 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
|
2079 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2080 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
|
2081 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2082 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2083 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
|
2084 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
|
2085 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
|
2086 cipb.hFileInfo.ioDirID = 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2087 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
|
2088 /* 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
|
2089 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2090 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
|
2091 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
|
2092 return -1; |
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 (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
|
2095 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2096 if (times) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2097 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
|
2098 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2099 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
|
2100 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2101 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2102 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2103 if (times) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2104 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
|
2105 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2106 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
|
2107 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2108 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2109 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
|
2110 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
|
2111 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2112 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2113 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2114 #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
|
2115 #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
|
2116 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2117 #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
|
2118 #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
|
2119 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2120 #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
|
2121 #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
|
2122 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2123 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2124 /* 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
|
2125 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2126 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
|
2127 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2128 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
|
2129 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2130 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
|
2131 CInfoPBRec cipb; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2132 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2133 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
|
2134 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2135 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2136 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
|
2137 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
|
2138 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
|
2139 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2140 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
|
2141 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2142 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
|
2143 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2144 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2145 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
|
2146 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
|
2147 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
|
2148 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
|
2149 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
|
2150 /* 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
|
2151 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2152 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
|
2153 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
|
2154 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2155 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2156 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
|
2157 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2158 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2159 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
|
2160 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
|
2161 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2162 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2163 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2164 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
|
2165 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2166 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2167 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2168 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2169 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2170 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
|
2171 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
|
2172 /* 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
|
2173 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2174 return -1; |
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 |
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 #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
|
2179 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2180 #undef open |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2181 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2182 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
|
2183 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2184 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
|
2185 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2186 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2187 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2188 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
|
2189 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
|
2190 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2191 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
|
2192 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2193 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2194 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
|
2195 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
|
2196 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
|
2197 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2198 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
|
2199 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2200 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
|
2201 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2202 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2203 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2204 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2205 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
|
2206 /* 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
|
2207 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
|
2208 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
|
2209 return res; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2210 #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
|
2211 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
|
2212 #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
|
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2216 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2217 #undef creat |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2218 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2219 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
|
2220 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2221 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
|
2222 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2223 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2224 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2225 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
|
2226 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2227 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2228 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
|
2229 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2230 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2231 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2232 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2233 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
|
2234 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
|
2235 return result; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2236 #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
|
2237 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
|
2238 #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
|
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2242 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2243 #undef unlink |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2244 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2245 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
|
2246 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2247 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
|
2248 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2249 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2250 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2251 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
|
2252 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2253 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2254 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
|
2255 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
|
2256 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
|
2257 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2258 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
|
2259 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2260 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
|
2261 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2262 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2263 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
|
2264 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2265 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2266 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2267 #undef read |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2268 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2269 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
|
2270 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2271 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
|
2272 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2273 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2274 #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
|
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 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2277 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
|
2278 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2279 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2280 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2281 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2282 #undef write |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2283 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2284 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
|
2285 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2286 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
|
2287 return count; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2288 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2289 #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
|
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 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2292 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
|
2293 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2294 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2295 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2296 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2297 #undef rename |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2298 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2299 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
|
2300 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2301 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
|
2302 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
|
2303 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2304 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
|
2305 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2306 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
|
2307 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2308 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2309 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
|
2310 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
|
2311 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
|
2312 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2313 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
|
2314 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2315 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
|
2316 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2317 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2318 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
|
2319 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2320 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2321 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
|
2322 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
|
2323 MAXPATHLEN+1)) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2324 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2325 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2326 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
|
2327 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2328 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2329 /* 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
|
2330 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
|
2331 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
|
2332 (void) unlink (mac_new_name); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2333 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2334 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
|
2335 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2336 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2337 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2338 #undef fopen |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2339 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
|
2340 FILE * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2341 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
|
2342 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2343 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
|
2344 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2345 char mac_pathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2346 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2347 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
|
2348 return 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2349 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2350 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
|
2351 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
|
2352 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
|
2353 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2354 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
|
2355 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2356 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
|
2357 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2358 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2359 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2360 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2361 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
|
2362 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
|
2363 #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
|
2364 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
|
2365 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2366 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2367 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2368 |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2369 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
|
2370 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2371 int |
72983
ddc3ec9e715f
[!MAC_OSX] (select): Fix argument name.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72953
diff
changeset
|
2372 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
|
2373 int nfds; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2374 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
|
2375 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
|
2376 { |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2377 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
|
2378 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2379 /* 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
|
2380 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
|
2381 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2382 |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2383 /* 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
|
2384 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
|
2385 asynchronously. */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2386 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
|
2387 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
|
2388 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
|
2389 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2390 #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
|
2391 EventTimeout timeoutval = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2392 (timeout |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2393 ? (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
|
2394 + 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
|
2395 : kEventDurationForever); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2396 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2397 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
|
2398 err = eventLoopTimedOutErr; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2399 else |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2400 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
|
2401 kEventLeaveInQueue, NULL); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2402 #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
|
2403 EventRecord e; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2404 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
|
2405 ((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
|
2406 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2407 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
|
2408 err = -9875; /* eventLoopTimedOutErr */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2409 else |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2410 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2411 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
|
2412 err = noErr; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2413 else |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2414 err = -9875; /* eventLoopTimedOutErr */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2415 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2416 #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
|
2417 } |
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
|
2418 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
|
2419 UNBLOCK_INPUT; |
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 if (err == noErr) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2422 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2423 /* 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
|
2424 detect_input_pending (); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2425 errno = EINTR; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2426 return -1; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2427 } |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2428 else |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2429 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2430 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
|
2431 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
|
2432 return 0; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
2433 } |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2434 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2435 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2436 |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2437 /* 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
|
2438 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
|
2439 encountered. */ |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2440 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2441 #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
|
2442 #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
|
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 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
|
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 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
|
2447 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2448 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
|
2449 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2450 #ifdef __MRC__ |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2451 __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
|
2452 #elif __MWERKS__ |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2453 __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
|
2454 #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
|
2455 You lose!!! |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2456 #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
|
2457 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2458 #undef signal |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2459 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2460 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
|
2461 __sigfun |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2462 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
|
2463 #elif __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2464 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
|
2465 __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
|
2466 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
|
2467 #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
|
2468 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2469 #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
|
2470 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2471 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
|
2472 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
|
2473 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2474 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2475 #ifdef __MRC__ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2476 __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
|
2477 #elif __MWERKS__ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2478 __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
|
2479 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2480 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2481 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2482 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
|
2483 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
|
2484 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
|
2485 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2486 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2487 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2488 |
62283
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2489 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
|
2490 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
|
2491 TMTaskPtr qlink; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2492 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2493 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
|
2494 (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
|
2495 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2496 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2497 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2498 static void |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2499 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
|
2500 long count; |
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 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
|
2503 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2504 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
|
2505 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
|
2506 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
|
2507 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
|
2508 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
|
2509 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
|
2510 if (count) |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2511 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
|
2512 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2513 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2514 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2515 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2516 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
|
2517 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
|
2518 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2519 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
|
2520 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2521 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
|
2522 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
|
2523 *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
|
2524 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
|
2525 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2526 return 0; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2527 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2528 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2529 return -1; |
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 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2532 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2533 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2534 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
|
2535 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2536 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
|
2537 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2538 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
|
2539 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2540 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
|
2541 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
|
2542 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2543 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
|
2544 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2545 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2546 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2547 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2548 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
|
2549 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2550 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
|
2551 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2552 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
|
2553 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2554 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
|
2555 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
|
2556 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
|
2557 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2558 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
|
2559 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2560 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
|
2561 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2562 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2563 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2564 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2565 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
|
2566 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2567 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
|
2568 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2569 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
|
2570 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2571 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
|
2572 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2573 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
|
2574 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2575 else |
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 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
|
2578 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2579 return 0; |
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 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2583 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2584 int |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2585 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
|
2586 int which; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2587 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
|
2588 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
|
2589 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2590 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
|
2591 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
|
2592 + (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
|
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 (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
|
2595 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2596 if (ovalue) |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2597 { |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2598 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
|
2599 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
|
2600 (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
|
2601 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2602 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
|
2603 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2604 else |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2605 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
|
2606 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2607 return 0; |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2608 } |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2609 |
988827be383c
[!MAC_OSX] Include keyboard.h and syssignal.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
62054
diff
changeset
|
2610 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2611 /* 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
|
2612 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
|
2613 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
|
2614 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
|
2615 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
|
2616 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2617 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2618 gettimeofday (tp) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2619 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
|
2620 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2621 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
|
2622 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
|
2623 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
|
2624 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
|
2625 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
|
2626 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2627 /* 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
|
2628 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
|
2629 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
|
2630 if (!inited) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2631 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2632 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
|
2633 inited = 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2634 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
|
2635 /* 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
|
2636 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
|
2637 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
|
2638 /* 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
|
2639 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
|
2640 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
|
2641 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2642 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2643 /* 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
|
2644 Microseconds (&uw_microseconds); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2645 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2646 /* 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
|
2647 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
|
2648 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
|
2649 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
|
2650 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
|
2651 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
|
2652 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2653 return 0; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2656 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2657 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2658 unsigned int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2659 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
|
2660 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2661 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
|
2662 EventRecord e; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2663 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2664 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
|
2665 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
|
2666 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2667 /* 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
|
2668 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
|
2669 } |
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 return (0); |
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 #endif /* __MRC__ */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2674 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2675 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2676 /* 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
|
2677 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
|
2678 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2679 #undef gmtime |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2680 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
|
2681 struct tm * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2682 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
|
2683 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2684 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
|
2685 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2686 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
|
2687 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2688 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2689 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2690 #undef localtime |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2691 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
|
2692 struct tm * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2693 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
|
2694 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2695 #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
|
2696 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
|
2697 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2698 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
|
2699 #endif |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2700 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2701 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
|
2702 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2703 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2704 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2705 #undef ctime |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2706 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
|
2707 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2708 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
|
2709 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2710 #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
|
2711 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
|
2712 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2713 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
|
2714 #endif |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2715 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2716 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
|
2717 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2718 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2719 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2720 #undef time |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2721 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
|
2722 time_t |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2723 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
|
2724 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2725 #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
|
2726 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
|
2727 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2728 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
|
2729 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2730 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2731 if (timer) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2732 *timer = mac_time; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2733 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2734 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
|
2735 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2736 |
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 /* 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
|
2739 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2740 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2741 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
|
2742 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2743 return 0; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2746 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2747 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2748 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
|
2749 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2750 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
|
2751 exit (1); |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2754 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2755 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2756 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
|
2757 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2758 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
|
2759 static seqnum = 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2760 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2761 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
|
2762 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
|
2763 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
|
2764 k--; |
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 k++; /* make k index of first 'X' */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2767 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2768 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
|
2769 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2770 /* 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
|
2771 sprintf (&template[k], "%0*d", len-k, seqnum++); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2772 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2773 return template; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2774 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2775 else |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2776 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
|
2777 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2778 |
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 /* 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
|
2781 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2782 #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
|
2783 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2784 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
|
2785 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
|
2786 |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2787 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
|
2788 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2789 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
|
2790 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
|
2791 }; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2792 |
53122 | 2793 static struct group my_group = |
2794 { | |
2795 /* There are no groups on the mac, so we just return "root" as the | |
2796 group name. */ | |
2797 "root", | |
2798 }; | |
2799 | |
44890
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 /* 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
|
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 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
|
2804 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2805 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2806 getwd (char *); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2807 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2808 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2809 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
|
2810 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2811 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
|
2812 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2813 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
|
2814 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2815 /* 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
|
2816 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
|
2817 tree. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2818 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
|
2819 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
|
2820 /* 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
|
2821 compared. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2822 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
|
2823 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
|
2824 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2825 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
|
2826 i--; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2827 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
|
2828 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
|
2829 if (found) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2830 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
|
2831 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2832 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2833 j = i; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2834 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
|
2835 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2836 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2837 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2838 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2839 if (!found) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2840 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2841 /* 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
|
2842 anyway. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2843 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
|
2844 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
|
2845 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2846 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2847 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2848 |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2849 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
|
2850 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2851 "emacs", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2852 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
|
2853 }; |
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 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
|
2856 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2857 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2858 static void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2859 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
|
2860 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2861 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
|
2862 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2863 /* 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
|
2864 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
|
2865 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2866 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
|
2867 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
|
2868 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2869 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
|
2870 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
|
2871 (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
|
2872 *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
|
2873 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
|
2874 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
|
2875 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2876 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2877 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
|
2878 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2879 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2880 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2881 struct passwd * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2882 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
|
2883 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2884 if (!my_passwd_inited) |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2885 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2886 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
|
2887 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
|
2888 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2889 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2890 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
|
2891 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2892 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2893 |
53122 | 2894 struct group * |
2895 getgrgid (gid_t gid) | |
2896 { | |
2897 return &my_group; | |
2898 } | |
2899 | |
2900 | |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2901 struct passwd * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2902 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
|
2903 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2904 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
|
2905 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
|
2906 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2907 if (!my_passwd_inited) |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2908 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2909 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
|
2910 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
|
2911 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
2912 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2913 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
|
2914 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2915 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2916 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2917 /* 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
|
2918 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
|
2919 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
|
2920 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2921 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2922 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2923 fork () |
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 return -1; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2928 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2929 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2930 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
|
2931 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2932 return -1; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2935 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2936 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2937 sys_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 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
|
2940 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2941 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2942 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2943 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2944 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
|
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2948 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2949 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2950 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
|
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2954 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2955 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2956 setpgrp () |
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 return 0; |
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 |
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 /* 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
|
2963 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2964 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2965 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
|
2966 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2967 errno = EACCES; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2968 return -1; |
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 |
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 /* 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
|
2973 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2974 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2975 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
|
2976 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2977 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2978 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2979 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2980 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2981 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2982 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2983 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
|
2984 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2985 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2986 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2987 } |
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 #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
|
2990 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2991 /* 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
|
2992 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
|
2993 MAXPATHLEN. */ |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
2994 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
|
2995 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
|
2996 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
|
2997 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
2998 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
|
2999 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3000 OSErr err; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3001 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3002 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
|
3003 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3004 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3005 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
|
3006 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
|
3007 p2cstr (path); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3008 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3009 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
|
3010 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
|
3011 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3012 do |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3013 { |
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.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
|
3015 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
|
3016 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
|
3017 /* 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
|
3018 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3019 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
|
3020 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
|
3021 return 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3022 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3023 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
|
3024 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
|
3025 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3026 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3027 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
|
3028 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
|
3029 /* 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
|
3030 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
|
3031 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3032 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
|
3033 /* stop when we see the volume's root directory */ |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3034 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3035 return 1; /* success */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3036 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3037 |
60360
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3038 |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
3039 #ifndef MAC_OSX |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
3040 |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
3041 static OSErr |
60360
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3042 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
|
3043 const char *ufn; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3044 FSSpec *fs; |
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 Str255 mac_pathname; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3047 |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3048 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
|
3049 return fnfErr; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3050 else |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3051 { |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3052 c2pstr (mac_pathname); |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3053 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
|
3054 } |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3055 } |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3056 |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
3057 static OSErr |
60360
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3058 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
|
3059 const FSSpec *fs; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3060 char *ufn; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3061 int ufnbuflen; |
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 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
|
3064 |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3065 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
|
3066 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
|
3067 && 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
|
3068 return noErr; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3069 else |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3070 return fnfErr; |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3071 } |
86edfe26d552
[!MAC_OSX && HAVE_CARBON]: Include Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
59897
diff
changeset
|
3072 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3073 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3074 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
|
3075 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3076 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
|
3077 OSErr err; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3078 FSSpec fsspec; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3079 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
|
3080 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
|
3081 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3082 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3083 if (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
|
3084 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3085 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3086 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
|
3087 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
|
3088 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
|
3089 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3090 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3091 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3092 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3093 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3094 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
|
3095 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
|
3096 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3097 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3098 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3099 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3100 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3101 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
|
3102 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
|
3103 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3104 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3105 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3106 } |
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 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
|
3109 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3110 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3111 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3112 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3113 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3114 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
|
3115 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3116 |
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 /* 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
|
3119 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3120 static int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3121 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
|
3122 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3123 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
|
3124 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
|
3125 int len; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3126 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3127 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
|
3128 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3129 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3130 buf[0] = '\0'; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3131 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3132 p = path; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3133 if (*p == '/') |
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 + 1, '/'); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3135 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3136 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
|
3137 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
|
3138 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3139 while (q) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3140 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3141 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
|
3142 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
|
3143 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
|
3144 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
|
3145 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3146 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
|
3147 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3148 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
|
3149 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3150 strcat (buf, "/"); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3151 len++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3152 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
|
3153 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
|
3154 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3155 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3156 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
|
3157 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3158 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3159 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
|
3160 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
|
3161 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3162 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3163 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3164 mode_t |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3165 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
|
3166 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3167 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
|
3168 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
|
3169 mask = numask; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3170 return oldmask; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3173 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3174 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3175 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
|
3176 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3177 /* 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
|
3178 return 0; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3181 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3182 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
|
3183 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
|
3184 { |
e55c855616f5
[!TARGET_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 /* 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
|
3186 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
|
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 |
e55c855616f5
[!TARGET_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 |
e55c855616f5
[!TARGET_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 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
|
3191 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
|
3192 { |
e55c855616f5
[!TARGET_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 /* 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
|
3194 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
|
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 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
3197 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
3198 int |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3199 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
|
3200 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3201 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3202 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
|
3203 #elif __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3204 /* 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
|
3205 descriptor */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3206 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
|
3207 #else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3208 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3209 #endif |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3212 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3213 /* 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
|
3214 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
|
3215 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
|
3216 unsuccessful ones. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3217 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3218 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3219 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
|
3220 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3221 int fd, ret; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3222 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3223 close (newd); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3224 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3225 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
|
3226 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
|
3227 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3228 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
|
3229 return newd; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3230 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
|
3231 close (fd); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3232 return ret; |
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 |
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 /* 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
|
3237 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3238 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3239 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
|
3240 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3241 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
|
3242 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3243 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3244 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3245 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3246 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
|
3247 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3248 return 0; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3251 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3252 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3253 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
|
3254 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3255 return -1; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3258 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3259 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3260 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3261 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
|
3262 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3263 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
|
3264 return 1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3265 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3266 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3267 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3268 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3269 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3270 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3271 getgid () |
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 return 100; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3276 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3277 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3278 getegid () |
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 return 100; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3283 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3284 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3285 getuid () |
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 return 200; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3290 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3291 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3292 geteuid () |
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 return 200; |
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 #endif /* __MRC__ */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3297 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3298 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3299 #ifdef __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3300 #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
|
3301 #undef getpid |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3302 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3303 getpid () |
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 return 9999; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3306 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3307 #endif |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3308 #endif /* __MWERKS__ */ |
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 #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
|
3311 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3312 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3313 /* 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
|
3314 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
|
3315 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
|
3316 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
|
3317 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
|
3318 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
|
3319 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
|
3320 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
|
3321 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3322 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3323 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
|
3324 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3325 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
|
3326 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
|
3327 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
|
3328 OSErr err; |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
3329 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
|
3330 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
|
3331 DIR *dir; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3332 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3333 /* 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
|
3334 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
|
3335 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
|
3336 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3337 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
|
3338 &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
|
3339 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
|
3340 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3341 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3342 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
|
3343 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3344 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3345 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
|
3346 strcat (full_path, "Emacs:"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3347 else |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3348 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3349 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3350 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
|
3351 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3352 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3353 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
|
3354 if (dir) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3355 closedir (dir); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3356 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
|
3357 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3358 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3359 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
|
3360 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
|
3361 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3362 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3363 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
|
3364 } |
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 #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
|
3367 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3368 /* 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
|
3369 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
|
3370 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
|
3371 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
|
3372 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
|
3373 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
|
3374 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
|
3375 parameter StringListID. |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3376 */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3377 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3378 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3379 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
|
3380 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3381 Handle h; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3382 Ptr p; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3383 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
|
3384 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3385 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
|
3386 if (h) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3387 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3388 HLock (h); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3389 p = *h; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3390 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
|
3391 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
|
3392 *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
|
3393 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
|
3394 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3395 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
|
3396 (*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
|
3397 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
|
3398 (*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
|
3399 p += length; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3400 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3401 (*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
|
3402 HUnlock (h); |
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 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3405 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3406 /* 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
|
3407 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
|
3408 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
|
3409 *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
|
3410 (*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
|
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3414 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3415 static char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3416 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
|
3417 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3418 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
|
3419 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
|
3420 OSErr err; |
69960
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
3421 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
|
3422 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
|
3423 DIR *dir; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3424 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3425 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
|
3426 &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
|
3427 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
|
3428 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3429 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3430 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
|
3431 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3432 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3433 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
|
3434 MAXPATHLEN+1)) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3435 return NULL; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3436 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3437 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
|
3438 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3439 |
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 char **environ; |
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 #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
|
3444 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3445 /* 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
|
3446 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3447 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3448 init_environ () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3449 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3450 int i; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3451 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3452 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
|
3453 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3454 i = 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3455 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
|
3456 i++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3457 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3458 /* 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
|
3459 by resource. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3460 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
|
3461 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3462 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
|
3463 if (environ) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3464 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3465 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
|
3466 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
|
3467 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3468 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
|
3469 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
|
3470 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3471 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
|
3472 i++; |
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 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3475 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3476 /* 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
|
3477 by resource. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3478 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
|
3479 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3480 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
|
3481 if (environ) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3482 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3483 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
|
3484 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
|
3485 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
|
3486 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3487 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
|
3488 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
|
3489 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
|
3490 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3491 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
|
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 |
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 /* 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
|
3498 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3499 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3500 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
|
3501 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3502 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
|
3503 char **e; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3504 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3505 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
|
3506 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
|
3507 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
|
3508 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3509 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
|
3510 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
|
3511 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3512 return 0; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3515 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3516 #ifdef __MRC__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3517 /* 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
|
3518 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
|
3519 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3520 "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
|
3521 "Abort", /* 1 */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3522 "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
|
3523 "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
|
3524 "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
|
3525 "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
|
3526 "?", "?", "?", "?", "?", "?", "?", "?", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3527 "Terminal" /* 32 */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3528 }; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3529 #elif __MWERKS__ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3530 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
|
3531 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3532 "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
|
3533 "Abort", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3534 "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
|
3535 "Illegal instruction", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3536 "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
|
3537 "Segment violation", |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3538 "Terminal" |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3539 }; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3540 #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
|
3541 You lose!!! |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3542 #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
|
3543 |
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 #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
|
3546 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3547 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3548 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
|
3549 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3550 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
|
3551 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
|
3552 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
|
3553 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3554 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
|
3555 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
|
3556 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3557 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3558 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3559 return -1; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3562 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3563 /* 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
|
3564 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
|
3565 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3566 /* 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
|
3567 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
|
3568 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3569 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3570 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3571 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
|
3572 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3573 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
|
3574 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3575 if (*s == '\\') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3576 s++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3577 s++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3578 } |
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 if (*s) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3581 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3582 *s = '\0'; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3583 return s; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3584 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3585 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3586 return NULL; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3589 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3590 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3591 mystrtok (char *s) |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3592 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3593 while (*s) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3594 s++; |
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 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
|
3597 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3598 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3599 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3600 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3601 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
|
3602 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3603 while (*from) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3604 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3605 if (*from == '\\') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3606 from++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3607 *to++ = *from++; |
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 *to = '\0'; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3612 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3613 /* 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
|
3614 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
|
3615 "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
|
3616 "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
|
3617 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
|
3618 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
|
3619 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
|
3620 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
|
3621 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
|
3622 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
|
3623 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
|
3624 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
|
3625 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
|
3626 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
|
3627 |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
3628 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
|
3629 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
|
3630 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3631 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3632 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
|
3633 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
|
3634 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
|
3635 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
|
3636 { |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
3637 #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
|
3638 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3639 #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
|
3640 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
|
3641 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
|
3642 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
|
3643 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
|
3644 OSErr iErr; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3645 FSSpec spec; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3646 LaunchParamBlockRec lpbr; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3647 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
|
3648 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
|
3649 TargetID targ; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3650 unsigned long ref_con, len; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3651 |
44890
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 (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
|
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 (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
|
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 (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
|
3657 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3658 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
|
3659 return -1; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3660 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3661 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
|
3662 + 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
|
3663 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3664 argc = 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3665 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
|
3666 argc++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3667 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3668 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
|
3669 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3670 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3671 /* 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
|
3672 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
|
3673 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
|
3674 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
|
3675 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
|
3676 && 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
|
3677 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3678 char *command, *t, tempmacpathname[MAXPATHLEN+1]; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3679 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3680 /* 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
|
3681 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
|
3682 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
|
3683 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
|
3684 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
|
3685 strcat (command, " "); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3686 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3687 t = command; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3688 newargc = 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3689 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
|
3690 while (t) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3691 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3692 newargc++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3693 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
|
3694 } |
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 newargv = (char **) alloca (sizeof (char *) * newargc); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3697 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3698 t = command; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3699 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
|
3700 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3701 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
|
3702 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
|
3703 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3704 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
|
3705 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
|
3706 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3707 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3708 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
|
3709 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3710 if (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
|
3711 == 0) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3712 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3713 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3714 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3715 { /* 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
|
3716 #if 0 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3717 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
|
3718 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
|
3719 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
|
3720 #endif /* 0 */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3721 Lisp_Object path; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
3722 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
|
3723 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
|
3724 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3725 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
|
3726 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
|
3727 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
|
3728 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
|
3729 return -1; |
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 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
|
3732 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3733 else |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3734 { |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3735 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
|
3736 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3737 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3738 newargv = (char **) alloca (sizeof (char *) * argc); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3739 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
|
3740 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
|
3741 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3742 if (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
|
3743 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3744 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
|
3745 if (t) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3746 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3747 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
|
3748 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
|
3749 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
|
3750 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
|
3751 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
|
3752 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3753 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
|
3754 + 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
|
3755 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
|
3756 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
|
3757 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3758 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3759 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3760 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
|
3761 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
|
3762 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
|
3763 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3764 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
|
3765 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
|
3766 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3767 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3768 else |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3769 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
|
3770 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
|
3771 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3772 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3773 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3774 /* 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
|
3775 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
|
3776 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
|
3777 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
|
3778 if (!param) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3779 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3780 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3781 p = param; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3782 *p++ = newargc; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3783 /* 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
|
3784 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
|
3785 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
|
3786 *p++ = '\0'; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3787 /* 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
|
3788 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
|
3789 p += strlen (macinfn); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3790 *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
|
3791 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
|
3792 p += strlen (macoutfn); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3793 *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
|
3794 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
|
3795 p += strlen (macerrfn); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3796 *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
|
3797 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
|
3798 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3799 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
|
3800 p += strlen (newargv[j]); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3801 *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
|
3802 } |
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 c2pstr (macappname); |
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 iErr = FSMakeFSSpec (0, 0, macappname, &spec); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3807 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3808 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
|
3809 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3810 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3811 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3812 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3813 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3814 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
|
3815 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
|
3816 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
|
3817 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
|
3818 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
|
3819 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3820 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
|
3821 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
|
3822 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3823 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3824 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3825 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3826 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3827 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
|
3828 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
|
3829 /* 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
|
3830 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3831 retries = 3; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3832 /* 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
|
3833 terminated recently. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3834 do |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3835 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3836 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
|
3837 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
|
3838 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3839 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
|
3840 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3841 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
|
3842 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3843 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3844 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3845 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3846 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3847 cursor_region_handle = NewRgn (); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3848 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3849 /* 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
|
3850 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
|
3851 while (1) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3852 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
|
3853 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
|
3854 && 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
|
3855 break; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3856 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3857 /* 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
|
3858 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
|
3859 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
|
3860 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3861 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
|
3862 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3863 return -1; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3864 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3865 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3866 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
|
3867 free (param); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3868 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3869 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
|
3870 #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
|
3871 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3872 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3873 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3874 DIR * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3875 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
|
3876 { |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3877 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
|
3878 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
|
3879 DIR *dirp; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3880 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3881 HVolumeParam vpb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3882 int len, vol_name_len; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3883 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3884 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
|
3885 return 0; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3886 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3887 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
|
3888 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
|
3889 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
|
3890 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3891 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
|
3892 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3893 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
|
3894 if (!dirp) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3895 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3896 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3897 /* 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
|
3898 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
|
3899 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
|
3900 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3901 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
|
3902 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
|
3903 return dirp; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3904 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3905 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3906 /* 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
|
3907 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
|
3908 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3909 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3910 /* 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
|
3911 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
|
3912 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
|
3913 strcat (mac_pathname, ":"); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3914 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3915 /* 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
|
3916 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
|
3917 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
|
3918 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
|
3919 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
|
3920 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3921 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
|
3922 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
|
3923 /* 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
|
3924 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
|
3925 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
|
3926 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
|
3927 /* 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
|
3928 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3929 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
|
3930 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
|
3931 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3932 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3933 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3934 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3935 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3936 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
|
3937 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
|
3938 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3939 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
|
3940 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
|
3941 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
|
3942 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3943 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
|
3944 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
|
3945 /* 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
|
3946 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
|
3947 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
|
3948 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
|
3949 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
|
3950 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3951 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3952 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3953 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3954 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3955 dirp->vol_ref_num = vpb.ioVRefNum; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3956 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3957 return dirp; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3958 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3959 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3960 int |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3961 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
|
3962 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3963 free (dp); |
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 return 0; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3968 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3969 struct dirent * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3970 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
|
3971 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3972 HParamBlockRec hpblock; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3973 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3974 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
|
3975 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
|
3976 int done; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3977 char *p; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3978 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3979 /* 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
|
3980 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
|
3981 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
|
3982 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
|
3983 pointer. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3984 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
|
3985 { |
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.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
|
3987 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
|
3988 hpblock.volumeParam.ioVolIndex = dp->current_index; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3989 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3990 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
|
3991 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
|
3992 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3993 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3994 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3995 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
3996 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
3997 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
|
3998 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
|
3999 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4000 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
|
4001 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4002 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
|
4003 s_dirent.d_name = s_name; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4004 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4005 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
|
4006 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4007 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4008 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4009 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
|
4010 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
|
4011 /* 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
|
4012 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4013 /* 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
|
4014 done = false; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4015 while (!done) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4016 { |
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.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
|
4018 /* 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
|
4019 cipb.hFileInfo.ioFDirIndex = dp->current_index; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4020 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4021 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
|
4022 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
|
4023 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4024 errno = ENOENT; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4025 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4026 } |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4027 |
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4028 /* 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
|
4029 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
|
4030 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
|
4031 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4032 done = !(cipb.hFileInfo.ioFlFndrInfo.fdFlags & fInvisible); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4033 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4034 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
|
4035 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4036 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4037 p2cstr (s_name); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4038 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4039 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
|
4040 while (*p) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4041 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4042 if (*p == '/') |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4043 *p = ':'; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4044 p++; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4045 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4046 |
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_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
|
4048 /* 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
|
4049 s_dirent.d_name = s_name; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4050 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4051 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
|
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4055 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4056 char * |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4057 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
|
4058 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4059 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
|
4060 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
|
4061 OSErr errno; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4062 CInfoPBRec cipb; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4063 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4064 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
|
4065 return NULL; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4066 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4067 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
|
4068 return 0; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4069 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4070 return path; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4071 } |
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 #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
|
4074 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4075 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4076 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4077 initialize_applescript () |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4078 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4079 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
|
4080 OSAError osaerror; |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4081 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4082 /* 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
|
4083 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
|
4084 error. */ |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4085 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
|
4086 kAppleScriptSubtype); |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4087 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4088 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
|
4089 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
|
4090 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
|
4091 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
|
4092 if (osaerror) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4093 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
|
4094 /* 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
|
4095 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4096 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4097 |
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
|
4098 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
|
4099 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
|
4100 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4101 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
|
4102 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
|
4103 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
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 /* 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
|
4106 |
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
|
4107 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
|
4108 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
|
4109 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4110 OSType result; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4111 if (NILP(arg)) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4112 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4113 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
|
4114 } |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4115 else |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4116 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4117 /* check type string */ |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4118 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
|
4119 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
|
4120 { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4121 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
|
4122 } |
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
|
4123 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
|
4124 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4125 return result; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4126 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4127 |
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
|
4128 /* 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
|
4129 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4130 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
|
4131 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
|
4132 { |
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
|
4133 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
|
4134 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4135 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
|
4136 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4137 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4138 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4139 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
|
4140 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
|
4141 (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
|
4142 Lisp_Object filename; |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4143 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
4144 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
|
4145 #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
|
4146 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
|
4147 #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
|
4148 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
|
4149 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4150 Lisp_Object result = Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4151 CHECK_STRING (filename); |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4152 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4153 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
|
4154 return 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 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
|
4157 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4158 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
|
4159 #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
|
4160 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
|
4161 #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
|
4162 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
|
4163 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4164 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4165 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4166 { |
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 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4168 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
|
4169 |
e55c855616f5
[!TARGET_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 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
|
4171 &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
|
4172 #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
|
4173 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
|
4174 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4175 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
|
4176 #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
|
4177 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4178 { |
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 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4180 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
|
4181 #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
|
4182 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
|
4183 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4184 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4185 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4186 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4187 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4188 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
|
4189 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4190 return result; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4191 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4192 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4193 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
|
4194 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
|
4195 (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
|
4196 Lisp_Object filename; |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4197 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
4198 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
|
4199 #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
|
4200 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
|
4201 #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
|
4202 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
|
4203 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4204 Lisp_Object result = Qnil; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4205 CHECK_STRING (filename); |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4206 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4207 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
|
4208 return 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 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
|
4211 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4212 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
|
4213 #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
|
4214 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
|
4215 #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
|
4216 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
|
4217 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4218 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4219 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4220 { |
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 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4222 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
|
4223 |
e55c855616f5
[!TARGET_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 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
|
4225 &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
|
4226 #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
|
4227 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
|
4228 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4229 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
|
4230 #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
|
4231 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4232 { |
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 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4234 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
|
4235 #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
|
4236 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
|
4237 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4238 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4239 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4240 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4241 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4242 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
|
4243 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4244 return result; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4245 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4246 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4247 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
|
4248 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
|
4249 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
|
4250 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
|
4251 (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
|
4252 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
|
4253 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
4254 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
|
4255 #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
|
4256 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
|
4257 #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
|
4258 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
|
4259 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4260 OSType cCode; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4261 CHECK_STRING (filename); |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4262 |
75097
5e8caf6183ec
(Fmac_set_file_creator): Use MAC_EMACS_CREATOR_CODE
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
74755
diff
changeset
|
4263 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
|
4264 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4265 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
|
4266 return 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 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
|
4269 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4270 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
|
4271 #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
|
4272 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
|
4273 #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
|
4274 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
|
4275 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4276 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4277 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4278 { |
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
|
4279 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4280 FSCatalogInfo catalogInfo; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4281 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
|
4282 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
|
4283 &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
|
4284 #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
|
4285 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
|
4286 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4287 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
|
4288 #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
|
4289 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4290 { |
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 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4292 ((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
|
4293 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
|
4294 /* 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
|
4295 #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
|
4296 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
|
4297 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
|
4298 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4299 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4300 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4301 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4302 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4303 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
|
4304 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4305 return Qt; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4306 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4307 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4308 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
|
4309 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
|
4310 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
|
4311 (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
|
4312 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
|
4313 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
4314 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
|
4315 #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
|
4316 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
|
4317 #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
|
4318 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
|
4319 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4320 OSType cCode; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4321 CHECK_STRING (filename); |
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 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
|
4324 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4325 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
|
4326 return 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 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
|
4329 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4330 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
|
4331 #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
|
4332 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
|
4333 #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
|
4334 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
|
4335 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4336 |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4337 if (status == noErr) |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4338 { |
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
|
4339 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4340 FSCatalogInfo catalogInfo; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4341 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
|
4342 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
|
4343 &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
|
4344 #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
|
4345 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
|
4346 |
e55c855616f5
[!TARGET_API_MAC_CARBON] Include charset.h, coding.h, and Endian.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64214
diff
changeset
|
4347 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
|
4348 #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
|
4349 if (status == noErr) |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4350 { |
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 #ifdef MAC_OSX |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4352 ((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
|
4353 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
|
4354 /* 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
|
4355 #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
|
4356 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
|
4357 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
|
4358 #endif |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4359 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4360 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4361 UNBLOCK_INPUT; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4362 if (status != noErr) { |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4363 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
|
4364 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4365 return Qt; |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4366 } |
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
4367 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4368 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4369 /* 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
|
4370 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
|
4371 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
|
4372 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
|
4373 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
|
4374 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
|
4375 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
|
4376 Components. */ |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4377 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4378 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
|
4379 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
|
4380 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
|
4381 { |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4382 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
|
4383 OSErr error; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4384 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
|
4385 |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4386 *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
|
4387 |
45851
7b1f766314f6
2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
45848
diff
changeset
|
4388 if (!as_scripting_component) |
7b1f766314f6
2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
45848
diff
changeset
|
4389 initialize_applescript(); |
7b1f766314f6
2002-06-17 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
45848
diff
changeset
|
4390 |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4391 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
|
4392 &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
|
4393 if (error) |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4394 return error; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4395 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4396 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
|
4397 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
|
4398 |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4399 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
|
4400 /* 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
|
4401 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
|
4402 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
|
4403 /* 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
|
4404 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
|
4405 &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
|
4406 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
|
4407 |
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4408 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
|
4409 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4410 #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
|
4411 *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
|
4412 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
|
4413 #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
|
4414 *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
|
4415 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
|
4416 #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
|
4417 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
|
4418 } |
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 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
|
4421 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4422 return osaerror; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4425 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4426 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
|
4427 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
|
4428 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
|
4429 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
|
4430 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
|
4431 component. */) |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4432 (script) |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4433 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
|
4434 { |
67665
98b67f3d9491
(create_apple_event_from_event_ref): Remove arg `types'.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67456
diff
changeset
|
4435 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
|
4436 long status; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4437 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4438 CHECK_STRING (script); |
47942
080b4586492b
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
46916
diff
changeset
|
4439 |
57425
0867872551d9
macterm.c (x_raise_frame): Add BLOCK_INPUT around SelectWindow
Steven Tamm <steventamm@mac.com>
parents:
57397
diff
changeset
|
4440 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
|
4441 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
|
4442 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
|
4443 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
|
4444 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
|
4445 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
|
4446 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
|
4447 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
|
4448 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
|
4449 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4450 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4451 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4452 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
|
4453 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
|
4454 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
|
4455 (filename) |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4456 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
|
4457 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4458 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
|
4459 |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4460 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
|
4461 |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4462 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
|
4463 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
|
4464 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4465 return Qnil; |
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 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4468 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4469 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
|
4470 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
|
4471 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
|
4472 (filename) |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4473 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
|
4474 { |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4475 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
|
4476 |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4477 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
|
4478 |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4479 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
|
4480 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
|
4481 else |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4482 return Qnil; |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4483 } |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4484 |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4485 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4486 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
|
4487 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
|
4488 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
|
4489 `undecoded-file-name'. */) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4490 (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
|
4491 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
|
4492 { |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4493 OSErr err; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4494 Lisp_Object result = Qnil; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4495 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
|
4496 AEDesc dst_desc; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4497 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4498 CHECK_STRING (src_data); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4499 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
|
4500 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
|
4501 else |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4502 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
|
4503 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4504 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
|
4505 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
|
4506 else |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4507 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
|
4508 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4509 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
|
4510 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
|
4511 dst_desc_type, &dst_desc); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4512 if (err == noErr) |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4513 { |
67786
55dd97aa46da
(posix_pathname_to_fsspec, fsspec_to_posix_pathname): Add
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67731
diff
changeset
|
4514 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
|
4515 AEDisposeDesc (&dst_desc); |
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 UNBLOCK_INPUT; |
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 return result; |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4520 } |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4521 |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
4522 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
4523 #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
|
4524 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
|
4525 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
|
4526 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4527 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
|
4528 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
|
4529 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
|
4530 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
|
4531 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
|
4532 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
|
4533 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4534 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
|
4535 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
|
4536 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4537 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
|
4538 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
|
4539 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
|
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 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
|
4542 ------------------------------------------------------------ |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4543 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
|
4544 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
|
4545 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
|
4546 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
|
4547 (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
|
4548 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
|
4549 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
|
4550 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
|
4551 (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
|
4552 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4553 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
|
4554 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
|
4555 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
|
4556 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4557 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
|
4558 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
|
4559 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
|
4560 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
|
4561 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
|
4562 otherwise. */) |
64604
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
4563 (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
|
4564 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
|
4565 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4566 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
|
4567 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
|
4568 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
|
4569 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
|
4570 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4571 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
|
4572 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
|
4573 else |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4574 { |
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_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
|
4576 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
|
4577 CHECK_STRING_CAR (tmp); |
71838
a322faa9b90c
(Fmac_get_preference): Use CHECK_LIST_END.
Kim F. Storm <storm@cua.dk>
parents:
71501
diff
changeset
|
4578 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
|
4579 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4580 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
|
4581 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
|
4582 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
|
4583 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
|
4584 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
|
4585 |
73384
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4586 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
|
4587 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4588 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
|
4589 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4590 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
|
4591 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
|
4592 { |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
4593 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
|
4594 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
|
4595 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
|
4596 } |
77140
f9e6e90b6141
(xrm_get_preference_database, Fmac_get_preference)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
4597 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
|
4598 goto out; |
f9e6e90b6141
(xrm_get_preference_database, Fmac_get_preference)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
75348
diff
changeset
|
4599 |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
4600 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
|
4601 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
|
4602 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
|
4603 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
|
4604 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
|
4605 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
|
4606 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
|
4607 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4608 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
|
4609 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
|
4610 { |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4611 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
|
4612 break; |
61572
4fdfaa49202b
Include charset.h and coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61553
diff
changeset
|
4613 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
|
4614 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
|
4615 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
|
4616 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
|
4617 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
|
4618 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
|
4619 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
|
4620 } |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4621 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4622 if (NILP (key)) |
69960
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 if (EQ (format, Qxml)) |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4625 { |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4626 CFDataRef data = CFPropertyListCreateXMLData (NULL, plist); |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4627 if (data == NULL) |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4628 goto out; |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4629 result = cfdata_to_lisp (data); |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4630 CFRelease (data); |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4631 } |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4632 else |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4633 result = |
b4cb58f90f13
(init_process): Remove undef.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
69430
diff
changeset
|
4634 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
|
4635 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
|
4636 } |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4637 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4638 out: |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4639 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
|
4640 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
|
4641 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
|
4642 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4643 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
|
4644 |
73384
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4645 UNGCPRO; |
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4646 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4647 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
|
4648 } |
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
|
4649 |
6e608d2306b0
[!TARGET_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 |
6e608d2306b0
[!TARGET_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 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
|
4652 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
|
4653 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
|
4654 { |
6e608d2306b0
[!TARGET_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 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
|
4656 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
|
4657 |
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
|
4658 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
|
4659 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
|
4660 |
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
|
4661 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
|
4662 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
|
4663 |
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
|
4664 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
|
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 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
|
4667 |
6e608d2306b0
[!TARGET_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 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
|
4669 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
|
4670 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
|
4671 } |
6e608d2306b0
[!TARGET_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 |
6e608d2306b0
[!TARGET_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 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
|
4674 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
|
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 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
|
4677 { |
6e608d2306b0
[!TARGET_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 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
|
4679 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
|
4680 { |
6e608d2306b0
[!TARGET_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 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
|
4682 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
|
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 } |
6e608d2306b0
[!TARGET_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 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
|
4687 } |
6e608d2306b0
[!TARGET_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 |
6e608d2306b0
[!TARGET_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 #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
|
4690 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
|
4691 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
|
4692 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
|
4693 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
|
4694 { |
6e608d2306b0
[!TARGET_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 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
|
4696 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
|
4697 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
|
4698 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
|
4699 |
6e608d2306b0
[!TARGET_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 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
|
4701 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
|
4702 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
|
4703 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
|
4704 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
|
4705 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
|
4706 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
|
4707 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
|
4708 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
|
4709 { |
6e608d2306b0
[!TARGET_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 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
|
4711 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
|
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 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
|
4714 { |
6e608d2306b0
[!TARGET_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 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
|
4716 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
|
4717 } |
6e608d2306b0
[!TARGET_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 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
|
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 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
|
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 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
|
4724 { |
6e608d2306b0
[!TARGET_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 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
|
4726 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
|
4727 } |
6e608d2306b0
[!TARGET_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 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
|
4730 { |
6e608d2306b0
[!TARGET_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 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
|
4732 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
|
4733 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
|
4734 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
|
4735 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
|
4736 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
|
4737 |
6e608d2306b0
[!TARGET_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 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
|
4739 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
|
4740 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
|
4741 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
|
4742 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
|
4743 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
|
4744 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
|
4745 |
6e608d2306b0
[!TARGET_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 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
|
4747 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
|
4748 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
|
4749 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
|
4750 |
6e608d2306b0
[!TARGET_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 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
|
4752 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
|
4753 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4754 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
|
4755 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
|
4756 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
|
4757 } |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4758 |
6e608d2306b0
[!TARGET_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 if (in_text) |
70871
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
4760 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
|
4761 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
|
4762 { |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4763 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
|
4764 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
|
4765 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
|
4766 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
|
4767 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
|
4768 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
|
4769 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
|
4770 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
|
4771 { |
6e608d2306b0
[!TARGET_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 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
|
4773 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
|
4774 } |
6e608d2306b0
[!TARGET_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 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
|
4776 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
|
4777 } |
6e608d2306b0
[!TARGET_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 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
|
4779 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
|
4780 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
|
4781 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
|
4782 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
|
4783 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
|
4784 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
|
4785 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
|
4786 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
|
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 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
|
4789 { |
6e608d2306b0
[!TARGET_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 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
|
4791 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
|
4792 } |
6e608d2306b0
[!TARGET_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 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
|
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 #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
|
4797 |
6e608d2306b0
[!TARGET_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 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
|
4799 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
|
4800 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
|
4801 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
|
4802 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
|
4803 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
|
4804 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
|
4805 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
|
4806 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
|
4807 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
|
4808 (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
|
4809 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
|
4810 { |
6e608d2306b0
[!TARGET_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 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
|
4812 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
|
4813 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
|
4814 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
|
4815 |
6e608d2306b0
[!TARGET_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_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
|
4817 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
|
4818 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
|
4819 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
|
4820 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
|
4821 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
|
4822 |
73384
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4823 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
|
4824 |
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
|
4825 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
|
4826 |
6e608d2306b0
[!TARGET_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 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
|
4828 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
|
4829 |
64553
58cbcf3e6ed1
(Fmac_code_convert_string): Add comment about Fstring_as_unibyte.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
64358
diff
changeset
|
4830 /* 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
|
4831 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
|
4832 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
|
4833 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
|
4834 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
|
4835 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
|
4836 && 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
|
4837 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
|
4838 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
|
4839 #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
|
4840 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
|
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 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
|
4843 |
6e608d2306b0
[!TARGET_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 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
|
4845 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
|
4846 } |
6e608d2306b0
[!TARGET_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 #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
|
4848 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
|
4849 { |
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
|
4850 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
|
4851 |
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 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
|
4853 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
|
4854 !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
|
4855 { |
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 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
|
4857 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
|
4858 !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
|
4859 } |
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
|
4860 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
|
4861 } |
6e608d2306b0
[!TARGET_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 |
6e608d2306b0
[!TARGET_API_MAC_CARBON]: Don't include charset.h or coding.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
61572
diff
changeset
|
4863 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
|
4864 |
73384
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4865 UNGCPRO; |
c5a4a949a307
(Fmac_get_preference, Fmac_code_convert_string): Add GCPROs.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72983
diff
changeset
|
4866 |
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
|
4867 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
|
4868 } |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4869 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4870 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
|
4871 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
|
4872 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
|
4873 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
|
4874 (command_id) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4875 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
|
4876 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4877 OSStatus err; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4878 HICommand command; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4879 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4880 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
|
4881 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
|
4882 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4883 BLOCK_INPUT; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4884 err = ProcessHICommand (&command); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4885 UNBLOCK_INPUT; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4886 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4887 if (err != noErr) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4888 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
|
4889 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4890 return Qnil; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4891 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4892 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
4893 #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
|
4894 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4895 |
66763
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4896 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
|
4897 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
|
4898 { |
72542
bb89b5bbed54
(create_apple_event_from_event_ref, select)
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
71838
diff
changeset
|
4899 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
|
4900 LangCode lang; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4901 RegionCode region; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4902 LocaleRef locale; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4903 Str255 str; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4904 |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4905 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
|
4906 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
|
4907 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
|
4908 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
|
4909 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
|
4910 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
|
4911 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
|
4912 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
|
4913 else |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4914 return Qnil; |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4915 } |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4916 |
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
4917 |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4918 #ifdef MAC_OSX |
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4919 |
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4920 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
|
4921 extern int noninteractive; |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
4922 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4923 /* 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
|
4924 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
|
4925 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
|
4926 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
|
4927 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
|
4928 dividing into some cases: |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4929 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
|
4930 -> Use `select'. |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4931 2. Sockets are not involved. |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4932 -> Use ReceiveNextEvent. |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4933 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
|
4934 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
|
4935 involved, and timeout is not too short (greater than |
77308
2ec04a50669a
Fix typo in comment.
Juanma Barranquero <lekktu@gmail.com>
parents:
77140
diff
changeset
|
4936 SELECT_TIMEOUT_THRESHOLD_RUNLOOP seconds). |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4937 -> 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
|
4938 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
|
4939 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
|
4940 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
|
4941 4. Otherwise. |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4942 -> 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
|
4943 executing `select' with a short timeout |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4944 (SELECT_POLLING_PERIOD_USEC microseconds). */ |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4945 |
72953
4df4a8300599
(SELECT_USE_CFSOCKET) [MAC_OSX]: Set default to 1.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72771
diff
changeset
|
4946 #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
|
4947 #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
|
4948 #endif |
4df4a8300599
(SELECT_USE_CFSOCKET) [MAC_OSX]: Set default to 1.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72771
diff
changeset
|
4949 |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4950 #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
|
4951 #if SELECT_USE_CFSOCKET |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4952 #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
|
4953 |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
4954 /* 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
|
4955 sys_select. */ |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
4956 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
|
4957 |
79821
ae78ea064d75
(mac_emacs_pid) [MAC_OSX]: New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79759
diff
changeset
|
4958 /* 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
|
4959 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
|
4960 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4961 static void |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4962 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
|
4963 CFSocketRef s; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4964 CFSocketCallBackType type; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4965 CFDataRef address; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4966 const void *data; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4967 void *info; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4968 { |
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 #endif /* SELECT_USE_CFSOCKET */ |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4971 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4972 static int |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4973 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
|
4974 int nfds; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4975 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
|
4976 EMACS_TIME *timeout; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
4977 { |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4978 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
|
4979 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
|
4980 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
|
4981 EventTimeout timeoutval = |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4982 (timeout |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4983 ? (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
|
4984 + 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
|
4985 : kEventDurationForever); |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4986 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
|
4987 |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4988 if (timeout == NULL) |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4989 { |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4990 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
|
4991 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
|
4992 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
|
4993 } |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4994 |
80450
726ad0983c8b
[MAC_OSX] (select_and_poll_event, sys_select):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80387
diff
changeset
|
4995 /* 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
|
4996 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
|
4997 asynchronously. */ |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
4998 BLOCK_INPUT; |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
4999 while (1) |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5000 { |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5001 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
|
5002 break; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5003 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5004 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
|
5005 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
|
5006 if (r != 0) |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5007 break; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5008 |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5009 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
|
5010 timedout_p = 1; |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5011 else |
80450
726ad0983c8b
[MAC_OSX] (select_and_poll_event, sys_select):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80387
diff
changeset
|
5012 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
|
5013 |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5014 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
|
5015 { |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5016 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
|
5017 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
|
5018 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
|
5019 } |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5020 else |
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5021 break; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5022 } |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5023 UNBLOCK_INPUT; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5024 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5025 if (r != 0) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5026 return r; |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5027 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
|
5028 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5029 /* 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
|
5030 detect_input_pending (); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5031 errno = EINTR; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5032 return -1; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5033 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5034 else |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5035 return 0; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5036 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5037 |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5038 /* 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
|
5039 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
|
5040 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
|
5041 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
|
5042 |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5043 int |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5044 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
|
5045 int fd; |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5046 { |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5047 #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
|
5048 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
|
5049 { |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5050 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
|
5051 CFSocketRef socket = |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5052 (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
|
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 (socket) |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5055 { |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5056 #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
|
5057 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
|
5058 |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5059 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
|
5060 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
|
5061 #endif |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5062 BLOCK_INPUT; |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5063 CFSocketInvalidate (socket); |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5064 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
|
5065 UNBLOCK_INPUT; |
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 return 1; |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5068 } |
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 #endif |
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 return 0; |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5073 } |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5074 |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
5075 int |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5076 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
|
5077 int nfds; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5078 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
|
5079 EMACS_TIME *timeout; |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
5080 { |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5081 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
|
5082 int r; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5083 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
|
5084 SELECT_TYPE orfds, owfds, oefds; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5085 |
56477
59a86f6ee1fb
Fixes for Ctrl-G support on carbon, replacing old timeout based polling
Steven Tamm <steventamm@mac.com>
parents:
53122
diff
changeset
|
5086 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
|
5087 || 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
|
5088 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
|
5089 |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5090 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
|
5091 orfds = *rfds; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5092 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5093 if (wfds) |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5094 owfds = *wfds; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5095 else |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5096 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
|
5097 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5098 if (efds) |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5099 oefds = *efds; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5100 else |
48740
b45c19284d24
sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents:
47942
diff
changeset
|
5101 { |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5102 EventTimeout timeoutval = |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5103 (timeout |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5104 ? (EMACS_SECS (*timeout) * kEventDurationSecond |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5105 + EMACS_USECS (*timeout) * kEventDurationMicrosecond) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5106 : kEventDurationForever); |
56479
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
5107 |
72771
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5108 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
|
5109 do |
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 nfds--; |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5112 } |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5113 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
|
5114 nfds++; |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5115 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
|
5116 |
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5117 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
|
5118 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
|
5119 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5120 /* 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
|
5121 some input is already available. */ |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5122 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
|
5123 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
|
5124 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
|
5125 return r; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5126 |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5127 *rfds = orfds; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5128 if (wfds) |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5129 *wfds = owfds; |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5130 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5131 #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
|
5132 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
|
5133 goto poll_periodically; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5134 |
80450
726ad0983c8b
[MAC_OSX] (select_and_poll_event, sys_select):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80387
diff
changeset
|
5135 /* 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
|
5136 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
|
5137 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
|
5138 BLOCK_INPUT; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5139 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
|
5140 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5141 int minfd, fd; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5142 CFRunLoopRef runloop = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5143 (CFRunLoopRef) GetCFRunLoopFromEventLoop (GetCurrentEventLoop ()); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5144 static CFMutableDictionaryRef sources; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5145 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5146 if (sources == NULL) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5147 sources = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5148 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
|
5149 &kCFTypeDictionaryValueCallBacks); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5150 |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5151 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
|
5152 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
|
5153 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
|
5154 &kCFTypeDictionaryValueCallBacks); |
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5155 |
72771
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5156 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
|
5157 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
|
5158 break; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5159 |
72771
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5160 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
|
5161 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
|
5162 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5163 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
|
5164 CFRunLoopSourceRef source = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5165 (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
|
5166 |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5167 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
|
5168 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5169 CFSocketRef socket = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5170 CFSocketCreateWithNative (NULL, fd, |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5171 (kCFSocketReadCallBack |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5172 | kCFSocketConnectCallBack), |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5173 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
|
5174 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5175 if (socket == NULL) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5176 continue; |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5177 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
|
5178 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
|
5179 CFRelease (socket); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5180 if (source == NULL) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5181 continue; |
79509
e4c75e9b905b
(cfsockets_for_select) [MAC_OSX && SELECT_USE_CFSOCKET]:
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
78384
diff
changeset
|
5182 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
|
5183 CFRelease (source); |
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 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
|
5186 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5187 |
80450
726ad0983c8b
[MAC_OSX] (select_and_poll_event, sys_select):
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
80387
diff
changeset
|
5188 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
|
5189 |
72771
0bddfbc5a0a5
[MAC_OSX] (sys_select): Check argument `nfds' more
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72704
diff
changeset
|
5190 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
|
5191 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
|
5192 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5193 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
|
5194 CFRunLoopSourceRef source = |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5195 (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
|
5196 |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5197 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
|
5198 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5199 } |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5200 UNBLOCK_INPUT; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5201 |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5202 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
|
5203 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5204 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
|
5205 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
|
5206 &select_timeout); |
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 else |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5209 { |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5210 FD_ZERO (rfds); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5211 if (wfds) |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5212 FD_ZERO (wfds); |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5213 return 0; |
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5214 } |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5215 #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
|
5216 } |
59146
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 poll_periodically: |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5219 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5220 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
|
5221 |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5222 if (timeout) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5223 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5224 remaining_time = *timeout; |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5225 EMACS_GET_TIME (now); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5226 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
|
5227 } |
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 do |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5230 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5231 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
|
5232 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
|
5233 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
|
5234 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
|
5235 if (r != 0) |
56479
45d805d79d29
mac.c (sys_select): Block input around call to
Steven Tamm <steventamm@mac.com>
parents:
56478
diff
changeset
|
5236 return r; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5237 |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5238 *rfds = orfds; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5239 if (wfds) |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5240 *wfds = owfds; |
59146
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5241 if (efds) |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5242 *efds = oefds; |
59146
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 if (timeout) |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5245 { |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5246 EMACS_GET_TIME (now); |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5247 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
|
5248 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5249 } |
9bde7721ad0f
* dispextern.h: Change HAVE_CARBON to MAC_OS.
Steven Tamm <steventamm@mac.com>
parents:
58752
diff
changeset
|
5250 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
|
5251 |
72704
49fb9398679c
[!MAC_OSX] Don't include keyboard.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
72542
diff
changeset
|
5252 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
|
5253 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
|
5254 } |
48740
b45c19284d24
sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents:
47942
diff
changeset
|
5255 } |
b45c19284d24
sys_select: Call mac_check_for_quit_char every second while blocking
Steven Tamm <steventamm@mac.com>
parents:
47942
diff
changeset
|
5256 |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5257 /* 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
|
5258 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
|
5259 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
|
5260 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
|
5261 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
|
5262 .../Emacs.app/Contents/Resources/ and |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5263 .../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
|
5264 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
|
5265 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
|
5266 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
|
5267 void |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5268 init_mac_osx_environment () |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5269 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5270 CFBundleRef bundle; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5271 CFURLRef bundleURL; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5272 CFStringRef cf_app_bundle_pathname; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5273 int app_bundle_pathname_len; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5274 char *app_bundle_pathname; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5275 char *p, *q; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5276 struct stat st; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5277 |
79821
ae78ea064d75
(mac_emacs_pid) [MAC_OSX]: New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79759
diff
changeset
|
5278 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
|
5279 |
66763
f6840b4933ef
[MAC_OSX] (init_mac_osx_environment): Reinitialize locale
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
66108
diff
changeset
|
5280 /* 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
|
5281 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
|
5282 (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
|
5283 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
|
5284 |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5285 /* 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
|
5286 app_bundle_pathname. */ |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5287 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5288 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
|
5289 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
|
5290 { |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
5291 /* 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
|
5292 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
|
5293 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
|
5294 return; |
b9746f88defa
Don't include stdlib.h or string.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
64553
diff
changeset
|
5295 } |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5296 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5297 bundleURL = CFBundleCopyBundleURL (bundle); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5298 if (!bundleURL) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5299 return; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5300 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5301 cf_app_bundle_pathname = CFURLCopyFileSystemPath (bundleURL, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5302 kCFURLPOSIXPathStyle); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5303 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
|
5304 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
|
5305 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5306 if (!CFStringGetCString (cf_app_bundle_pathname, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5307 app_bundle_pathname, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5308 app_bundle_pathname_len + 1, |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5309 kCFStringEncodingISOLatin1)) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5310 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5311 CFRelease (cf_app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5312 return; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5313 } |
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 CFRelease (cf_app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5316 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5317 /* 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
|
5318 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
|
5319 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
|
5320 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
|
5321 to leim dir>". */ |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5322 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
|
5323 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
|
5324 if (!getenv ("EMACSLOADPATH")) |
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 q[0] = '\0'; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5327 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5328 strcpy (p, app_bundle_pathname); |
78383
f97cdcfcf9ee
Adjust load-path
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
78260
diff
changeset
|
5329 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
|
5330 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
|
5331 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5332 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5333 strcpy (p, app_bundle_pathname); |
78383
f97cdcfcf9ee
Adjust load-path
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
78260
diff
changeset
|
5334 strcat (p, "/Contents/Resources/lisp"); |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5335 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
|
5336 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5337 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5338 strcat (q, ":"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5339 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5340 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5341 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5342 strcpy (p, app_bundle_pathname); |
78383
f97cdcfcf9ee
Adjust load-path
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
78260
diff
changeset
|
5343 strcat (p, "/Contents/Resources/leim"); |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5344 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
|
5345 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5346 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5347 strcat (q, ":"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5348 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5349 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5350 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5351 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5352 setenv ("EMACSLOADPATH", q, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5353 } |
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 if (!getenv ("EMACSPATH")) |
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 q[0] = '\0'; |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5358 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5359 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
|
5360 strcat (p, "/Contents/MacOS/libexec"); |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5361 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
|
5362 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5363 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5364 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
|
5365 strcat (p, "/Contents/MacOS/bin"); |
46916
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5366 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
|
5367 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5368 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5369 strcat (q, ":"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5370 strcat (q, p); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5371 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5372 |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5373 if (q[0] != '\0') |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5374 setenv ("EMACSPATH", q, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5375 } |
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 if (!getenv ("EMACSDATA")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5378 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5379 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5380 strcat (p, "/Contents/Resources/etc"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5381 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
|
5382 setenv ("EMACSDATA", p, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5383 } |
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 if (!getenv ("EMACSDOC")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5386 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5387 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5388 strcat (p, "/Contents/Resources/etc"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5389 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
|
5390 setenv ("EMACSDOC", p, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5391 } |
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 if (!getenv ("INFOPATH")) |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5394 { |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5395 strcpy (p, app_bundle_pathname); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5396 strcat (p, "/Contents/Resources/info"); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5397 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
|
5398 setenv ("INFOPATH", p, 1); |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5399 } |
aff9c7fcedb0
2002-08-15 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46856
diff
changeset
|
5400 } |
46856
eba75fedd593
2002-08-10 Andrew Choi <akochoi@shaw.ca>
Andrew Choi <akochoi@shaw.ca>
parents:
46788
diff
changeset
|
5401 #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
|
5402 |
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
|
5403 #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
|
5404 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
|
5405 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
|
5406 { |
80387
3fdc60eb4014
(xrm_get_preference_database): Remove BLOCK_INPUT.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
79821
diff
changeset
|
5407 #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
|
5408 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
|
5409 /* 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
|
5410 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
|
5411 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
|
5412 #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
|
5413 } |
04ef1ad19c59
(wakeup_from_rne_enabled_p) [TARGET_API_MAC_CARBON]: New
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
73571
diff
changeset
|
5414 #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
|
5415 |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
5416 void |
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
5417 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
|
5418 { |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
5419 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
|
5420 staticpro (&Qundecoded_file_name); |
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
5421 |
60632
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
5422 #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
|
5423 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
|
5424 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
|
5425 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
|
5426 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
|
5427 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
|
5428 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
|
5429 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
|
5430 |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
5431 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
|
5432 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
|
5433 |
6e608d2306b0
[!TARGET_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 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
|
5435 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
|
5436 |
6e608d2306b0
[!TARGET_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 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
|
5438 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
|
5439 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
|
5440 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
|
5441 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
|
5442 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
|
5443 #endif |
fa8be36e244d
Include macterm.h instead of directly including Carbon.h.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
60360
diff
changeset
|
5444 |
70871
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 int 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 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
|
5449 { |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5450 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
|
5451 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
|
5452 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5453 } |
815f914dcf9b
(ae_attr_table): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
70492
diff
changeset
|
5454 |
67456
2efa50cbb7cd
(Qundecoded_file_name): New variable.
YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
parents:
67088
diff
changeset
|
5455 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
|
5456 #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
|
5457 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
|
5458 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
|
5459 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
|
5460 #endif |
44890
01b93e5e53a7
Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents:
diff
changeset
|
5461 |
64214
0441edbff1bf
Adding in functions for setting and retrieving file type info
Steven Tamm <steventamm@mac.com>
parents:
64084
diff
changeset
|
5462 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
|
5463 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
|
5464 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
|
5465 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
|
5466 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
|
5467 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
|
5468 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
|
5469 |
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 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
|
5471 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
|
5472 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
|
5473 |
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 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
|
5475 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
|
5476 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
|
5477 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
|
5478 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
|
5479 } |
52401 | 5480 |
5481 /* arch-tag: 29d30c1f-0c6b-4f88-8a6d-0558d7f9dbff | |
5482 (do not change this comment) */ |