aboutsummaryrefslogtreecommitdiffstats
path: root/src/mac.c
diff options
context:
space:
mode:
authorMiles Bader2004-10-14 08:50:09 +0000
committerMiles Bader2004-10-14 08:50:09 +0000
commit91900dd736dc0ab57a38da1fa9daa5ddde487bfb (patch)
treef592b350cad8a3a6bd196722bb553469c5781c1a /src/mac.c
parent2beba76dd5f6e3f1fcf9cba8b66e465ae9e20519 (diff)
parentebbeed623cb9902e520fc67d6d271e222e16867f (diff)
downloademacs-91900dd736dc0ab57a38da1fa9daa5ddde487bfb.tar.gz
emacs-91900dd736dc0ab57a38da1fa9daa5ddde487bfb.zip
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-57
Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-594 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-598 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-599 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-600 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-602 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-603 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-604 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-609 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-610 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-611 - miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-614 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-615 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-42 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-43 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-44 - miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-46 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-47 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-48 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-49 Add {arch}/=commit-merge-make-log * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-50 {arch}/=commit-merge-make-log: Don't die if there are no ChangeLog changes
Diffstat (limited to 'src/mac.c')
-rw-r--r--src/mac.c48
1 files changed, 30 insertions, 18 deletions
diff --git a/src/mac.c b/src/mac.c
index 9740b3bf3f4..91d07372578 100644
--- a/src/mac.c
+++ b/src/mac.c
@@ -24,6 +24,7 @@ Boston, MA 02111-1307, USA. */
24 24
25#include <stdio.h> 25#include <stdio.h>
26#include <errno.h> 26#include <errno.h>
27#include <time.h>
27#include <utime.h> 28#include <utime.h>
28#include <dirent.h> 29#include <dirent.h>
29#include <sys/types.h> 30#include <sys/types.h>
@@ -46,6 +47,8 @@ Boston, MA 02111-1307, USA. */
46#undef realloc 47#undef realloc
47#undef init_process 48#undef init_process
48#include <Carbon/Carbon.h> 49#include <Carbon/Carbon.h>
50#undef mktime
51#define mktime emacs_mktime
49#undef free 52#undef free
50#define free unexec_free 53#define free unexec_free
51#undef malloc 54#undef malloc
@@ -72,6 +75,7 @@ Boston, MA 02111-1307, USA. */
72#include "process.h" 75#include "process.h"
73#include "sysselect.h" 76#include "sysselect.h"
74#include "systime.h" 77#include "systime.h"
78#include "blockinput.h"
75 79
76Lisp_Object QCLIPBOARD; 80Lisp_Object QCLIPBOARD;
77 81
@@ -2547,7 +2551,9 @@ component. */)
2547 2551
2548 CHECK_STRING (script); 2552 CHECK_STRING (script);
2549 2553
2554 BLOCK_INPUT;
2550 status = do_applescript (SDATA (script), &result); 2555 status = do_applescript (SDATA (script), &result);
2556 UNBLOCK_INPUT;
2551 if (status) 2557 if (status)
2552 { 2558 {
2553 if (!result) 2559 if (!result)
@@ -2617,26 +2623,23 @@ DEFUN ("mac-paste-function", Fmac_paste_function, Smac_paste_function, 0, 0, 0,
2617 () 2623 ()
2618{ 2624{
2619#if TARGET_API_MAC_CARBON 2625#if TARGET_API_MAC_CARBON
2626 OSStatus err;
2620 ScrapRef scrap; 2627 ScrapRef scrap;
2621 ScrapFlavorFlags sff; 2628 ScrapFlavorFlags sff;
2622 Size s; 2629 Size s;
2623 int i; 2630 int i;
2624 char *data; 2631 char *data;
2625 2632
2626 if (GetCurrentScrap (&scrap) != noErr) 2633 BLOCK_INPUT;
2627 return Qnil; 2634 err = GetCurrentScrap (&scrap);
2628 2635 if (err == noErr)
2629 if (GetScrapFlavorFlags (scrap, kScrapFlavorTypeText, &sff) != noErr) 2636 err = GetScrapFlavorFlags (scrap, kScrapFlavorTypeText, &sff);
2630 return Qnil; 2637 if (err == noErr)
2631 2638 err = GetScrapFlavorSize (scrap, kScrapFlavorTypeText, &s);
2632 if (GetScrapFlavorSize (scrap, kScrapFlavorTypeText, &s) != noErr) 2639 if (err == noErr && (data = (char*) alloca (s)))
2633 return Qnil; 2640 err = GetScrapFlavorData (scrap, kScrapFlavorTypeText, &s, data);
2634 2641 UNBLOCK_INPUT;
2635 if ((data = (char*) alloca (s)) == NULL) 2642 if (err != noErr || s == 0)
2636 return Qnil;
2637
2638 if (GetScrapFlavorData (scrap, kScrapFlavorTypeText, &s, data) != noErr
2639 || s == 0)
2640 return Qnil; 2643 return Qnil;
2641 2644
2642 /* Emacs expects clipboard contents have Unix-style eol's */ 2645 /* Emacs expects clipboard contents have Unix-style eol's */
@@ -2701,13 +2704,22 @@ DEFUN ("mac-cut-function", Fmac_cut_function, Smac_cut_function, 1, 2, 0,
2701#if TARGET_API_MAC_CARBON 2704#if TARGET_API_MAC_CARBON
2702 { 2705 {
2703 ScrapRef scrap; 2706 ScrapRef scrap;
2707
2708 BLOCK_INPUT;
2704 ClearCurrentScrap (); 2709 ClearCurrentScrap ();
2705 if (GetCurrentScrap (&scrap) != noErr) 2710 if (GetCurrentScrap (&scrap) != noErr)
2706 error ("cannot get current scrap"); 2711 {
2712 UNBLOCK_INPUT;
2713 error ("cannot get current scrap");
2714 }
2707 2715
2708 if (PutScrapFlavor (scrap, kScrapFlavorTypeText, kScrapFlavorMaskNone, len, 2716 if (PutScrapFlavor (scrap, kScrapFlavorTypeText, kScrapFlavorMaskNone, len,
2709 buf) != noErr) 2717 buf) != noErr)
2710 error ("cannot put to scrap"); 2718 {
2719 UNBLOCK_INPUT;
2720 error ("cannot put to scrap");
2721 }
2722 UNBLOCK_INPUT;
2711 } 2723 }
2712#else /* not TARGET_API_MAC_CARBON */ 2724#else /* not TARGET_API_MAC_CARBON */
2713 ZeroScrap (); 2725 ZeroScrap ();
@@ -2742,9 +2754,11 @@ and t is the same as `SECONDARY'. */)
2742 ScrapRef scrap; 2754 ScrapRef scrap;
2743 ScrapFlavorFlags sff; 2755 ScrapFlavorFlags sff;
2744 2756
2757 BLOCK_INPUT;
2745 if (GetCurrentScrap (&scrap) == noErr) 2758 if (GetCurrentScrap (&scrap) == noErr)
2746 if (GetScrapFlavorFlags (scrap, kScrapFlavorTypeText, &sff) == noErr) 2759 if (GetScrapFlavorFlags (scrap, kScrapFlavorTypeText, &sff) == noErr)
2747 val = Qt; 2760 val = Qt;
2761 UNBLOCK_INPUT;
2748#else /* not TARGET_API_MAC_CARBON */ 2762#else /* not TARGET_API_MAC_CARBON */
2749 Handle my_handle; 2763 Handle my_handle;
2750 long rc, scrap_offset; 2764 long rc, scrap_offset;
@@ -2769,8 +2783,6 @@ and t is the same as `SECONDARY'. */)
2769extern int inhibit_window_system; 2783extern int inhibit_window_system;
2770extern int noninteractive; 2784extern int noninteractive;
2771 2785
2772#include "blockinput.h"
2773
2774/* When Emacs is started from the Finder, SELECT always immediately 2786/* When Emacs is started from the Finder, SELECT always immediately
2775 returns as if input is present when file descriptor 0 is polled for 2787 returns as if input is present when file descriptor 0 is polled for
2776 input. Strangely, when Emacs is run as a GUI application from the 2788 input. Strangely, when Emacs is run as a GUI application from the