Mercurial > emacs
changeset 67788:114d965dfb60
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.
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
---|---|
date | Sat, 24 Dec 2005 02:50:45 +0000 |
parents | 8c306a35f0b0 |
children | da66b9635da6 |
files | src/macterm.c |
diffstat | 1 files changed, 24 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/src/macterm.c Sat Dec 24 02:50:34 2005 +0000 +++ b/src/macterm.c Sat Dec 24 02:50:45 2005 +0000 @@ -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]; - - 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); + OSErr err; + AEDesc desc; + + 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)