diff options
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 2005-12-24 02:50:45 +0000 |
---|---|---|
committer | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 2005-12-24 02:50:45 +0000 |
commit | 0e0a1663ccc907597a10877b057325924f1f82be (patch) | |
tree | be1980a9d3b6a34cb008fd9f7ba8acb61f9989fc /src/macterm.c | |
parent | d62ff4c3cc0568359ce83de46c132dbe123c8741 (diff) | |
download | emacs-0e0a1663ccc907597a10877b057325924f1f82be.tar.gz |
Don't include sys/param.h.
(init_coercion_handler): Add extern.
[MAC_OS8] (main): Call init_coercion_handler.
(mac_initialize) [MAC_OSX]: Likewise.
[TARGET_API_MAC_CARBON] (mac_do_receive_drag): Use coercion of
Apple event data for translation from/to file names.
Diffstat (limited to 'src/macterm.c')
-rw-r--r-- | src/macterm.c | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/src/macterm.c b/src/macterm.c index c8fc77b20ff..1adbad9ddd7 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -68,7 +68,6 @@ Boston, MA 02110-1301, USA. */ #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 init_apple_event_handler P_ ((void)); 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 @@ mac_do_receive_drag (WindowPtr window, void *handlerRefCon, 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 @@ main (void) init_environ (); + init_coercion_handler (); + initialize_applescript (); init_apple_event_handler (); @@ -10705,6 +10707,8 @@ mac_initialize () #endif /* USE_CARBON_EVENTS */ #ifdef MAC_OSX + init_coercion_handler (); + init_apple_event_handler (); if (!inhibit_window_system) |