diff options
| author | YAMAMOTO Mitsuharu | 2006-01-05 08:14:33 +0000 |
|---|---|---|
| committer | YAMAMOTO Mitsuharu | 2006-01-05 08:14:33 +0000 |
| commit | 11aa10071e392537155d4b4d8f4e685524ada94e (patch) | |
| tree | 8117e759a1308e86deff67aadc4c0217908dabaa /src | |
| parent | b9f0075cf242e2cb0318c360475f166ef7ce5583 (diff) | |
| download | emacs-11aa10071e392537155d4b4d8f4e685524ada94e.tar.gz emacs-11aa10071e392537155d4b4d8f4e685524ada94e.zip | |
(Fx_server_version): Use gestaltSystemVersionMajor,
gestaltSystemVersionMinor, and gestaltSystemVersionBugFix on Mac
OS X 10.4 and later.
Diffstat (limited to 'src')
| -rw-r--r-- | src/macfns.c | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/src/macfns.c b/src/macfns.c index 4ede8b7971b..110b697ce5e 100644 --- a/src/macfns.c +++ b/src/macfns.c | |||
| @@ -2880,24 +2880,37 @@ If omitted or nil, that stands for the selected frame's display. */) | |||
| 2880 | (display) | 2880 | (display) |
| 2881 | Lisp_Object display; | 2881 | Lisp_Object display; |
| 2882 | { | 2882 | { |
| 2883 | int mac_major_version; | 2883 | UInt32 response, major, minor, bugfix; |
| 2884 | SInt32 response; | ||
| 2885 | OSErr err; | 2884 | OSErr err; |
| 2886 | 2885 | ||
| 2887 | BLOCK_INPUT; | 2886 | BLOCK_INPUT; |
| 2888 | err = Gestalt (gestaltSystemVersion, &response); | 2887 | err = Gestalt (gestaltSystemVersion, &response); |
| 2888 | if (err == noErr) | ||
| 2889 | if (response >= 0x00001040) | ||
| 2890 | { | ||
| 2891 | err = Gestalt ('sys1', &major); /* gestaltSystemVersionMajor */ | ||
| 2892 | if (err == noErr) | ||
| 2893 | err = Gestalt ('sys2', &minor); /* gestaltSystemVersionMinor */ | ||
| 2894 | if (err == noErr) | ||
| 2895 | err = Gestalt ('sys3', &bugfix); /* gestaltSystemVersionBugFix */ | ||
| 2896 | } | ||
| 2897 | else | ||
| 2898 | { | ||
| 2899 | bugfix = response & 0xf; | ||
| 2900 | response >>= 4; | ||
| 2901 | minor = response & 0xf; | ||
| 2902 | response >>= 4; | ||
| 2903 | /* convert BCD to int */ | ||
| 2904 | major = response - (response >> 4) * 6; | ||
| 2905 | } | ||
| 2889 | UNBLOCK_INPUT; | 2906 | UNBLOCK_INPUT; |
| 2890 | 2907 | ||
| 2891 | if (err != noErr) | 2908 | if (err != noErr) |
| 2892 | error ("Cannot get Mac OS version"); | 2909 | error ("Cannot get Mac OS version"); |
| 2893 | 2910 | ||
| 2894 | mac_major_version = (response >> 8) & 0xff; | 2911 | return Fcons (make_number (major), |
| 2895 | /* convert BCD to int */ | 2912 | Fcons (make_number (minor), |
| 2896 | mac_major_version -= (mac_major_version >> 4) * 6; | 2913 | Fcons (make_number (bugfix), |
| 2897 | |||
| 2898 | return Fcons (make_number (mac_major_version), | ||
| 2899 | Fcons (make_number ((response >> 4) & 0xf), | ||
| 2900 | Fcons (make_number (response & 0xf), | ||
| 2901 | Qnil))); | 2914 | Qnil))); |
| 2902 | } | 2915 | } |
| 2903 | 2916 | ||