[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/macterm.c
From: |
YAMAMOTO Mitsuharu |
Subject: |
[Emacs-diffs] Changes to emacs/src/macterm.c |
Date: |
Sat, 24 Dec 2005 02:50:45 +0000 |
Index: emacs/src/macterm.c
diff -u emacs/src/macterm.c:1.149 emacs/src/macterm.c:1.150
--- emacs/src/macterm.c:1.149 Thu Dec 22 08:17:10 2005
+++ emacs/src/macterm.c Sat Dec 24 02:50:45 2005
@@ -68,7 +68,6 @@
#include <errno.h>
#include <setjmp.h>
#include <sys/stat.h>
-#include <sys/param.h>
#include "charset.h"
#include "coding.h"
@@ -8201,6 +8200,7 @@
extern void mac_find_apple_event_spec P_ ((AEEventClass, AEEventID,
Lisp_Object *, Lisp_Object *,
Lisp_Object *));
+extern OSErr init_coercion_handler P_ ((void));
#if TARGET_API_MAC_CARBON
/* Drag and Drop */
@@ -9207,25 +9207,25 @@
result = GetFlavorFlags (theDrag, theItem, flavorTypeHFS, &theFlags);
if (result == noErr)
{
-#ifdef MAC_OSX
- FSRef fref;
-#endif
- char unix_path_name[MAXPATHLEN];
+ OSErr err;
+ AEDesc desc;
- GetFlavorData (theDrag, theItem, flavorTypeHFS, &data, &size, 0L);
-#ifdef MAC_OSX
- /* Use Carbon routines, otherwise it converts the file name
- to /Macintosh HD/..., which is not correct. */
- FSpMakeFSRef (&data.fileSpec, &fref);
- if (! FSRefMakePath (&fref, unix_path_name, sizeof (unix_path_name)));
-#else
- if (fsspec_to_posix_pathname (&data.fileSpec, unix_path_name,
- sizeof (unix_path_name) - 1) == noErr)
-#endif
- /* x-dnd functions expect undecoded filenames. */
- file_list = Fcons (make_unibyte_string (unix_path_name,
- strlen (unix_path_name)),
- file_list);
+ err = GetFlavorData (theDrag, theItem, flavorTypeHFS,
+ &data, &size, 0L);
+ if (err == noErr)
+ err = AECoercePtr (typeFSS, &data.fileSpec, sizeof (FSSpec),
+ TYPE_FILE_NAME, &desc);
+ if (err == noErr)
+ {
+ Lisp_Object file;
+
+ /* x-dnd functions expect undecoded filenames. */
+ file = make_uninit_string (AEGetDescDataSize (&desc));
+ err = AEGetDescData (&desc, SDATA (file), SBYTES (file));
+ if (err == noErr)
+ file_list = Fcons (file, file_list);
+ AEDisposeDesc (&desc);
+ }
}
}
/* If there are items in the list, construct an event and post it to
@@ -9317,6 +9317,8 @@
init_environ ();
+ init_coercion_handler ();
+
initialize_applescript ();
init_apple_event_handler ();
@@ -10705,6 +10707,8 @@
#endif /* USE_CARBON_EVENTS */
#ifdef MAC_OSX
+ init_coercion_handler ();
+
init_apple_event_handler ();
if (!inhibit_window_system)