aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/devdraw/macargv.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/devdraw/macargv.c')
-rw-r--r--src/cmd/devdraw/macargv.c90
1 files changed, 0 insertions, 90 deletions
diff --git a/src/cmd/devdraw/macargv.c b/src/cmd/devdraw/macargv.c
deleted file mode 100644
index a5ea1ade..00000000
--- a/src/cmd/devdraw/macargv.c
+++ /dev/null
@@ -1,90 +0,0 @@
-#include <u.h>
-#include <stdio.h>
-#include <Carbon/Carbon.h>
-
-AUTOFRAMEWORK(Carbon)
-
-static OSErr Handler(const AppleEvent *event, AppleEvent *reply, long handlerRefcon);
-
-int
-main(void)
-{
- AEInstallEventHandler(kCoreEventClass, kAEOpenDocuments, Handler, 0, false);
- RunApplicationEventLoop();
- return 0;
-}
-
-static OSErr
-GetFullPathname(FSSpec *fss, char *path, int len)
-{
- FSRef fsr;
- OSErr err;
-
- *path = '\0';
- err = FSpMakeFSRef(fss, &fsr);
- if (err == fnfErr) {
- /* FSSpecs can point to non-existing files, fsrefs can't. */
- FSSpec fss2;
- int tocopy;
-
- err = FSMakeFSSpec(fss->vRefNum, fss->parID,
- (unsigned char*)"", &fss2);
- if (err)
- return err;
- err = FSpMakeFSRef(&fss2, &fsr);
- if (err)
- return err;
- err = (OSErr)FSRefMakePath(&fsr, (unsigned char*)path, len-1);
- if (err)
- return err;
- /* This part is not 100% safe: we append the filename part, but
- ** I'm not sure that we don't run afoul of the various 8bit
- ** encodings here. Will have to look this up at some point...
- */
- strcat(path, "/");
- tocopy = fss->name[0];
- if ((strlen(path) + tocopy) >= len)
- tocopy = len - strlen(path) - 1;
- if (tocopy > 0)
- strncat(path, (char*)fss->name+1, tocopy);
- }
- else {
- if (err)
- return err;
- err = (OSErr)FSRefMakePath(&fsr, (unsigned char*)path, len);
- if (err)
- return err;
- }
- return 0;
-}
-
-static void
-chk(int err)
-{
- if(err != 0) {
- printf("err %d\n", err);
- exit(1);
- }
-}
-
-static OSErr
-Handler(const AppleEvent *event, AppleEvent *reply, long handlerRefcon)
-{
- AEDesc list;
- DescType type;
- FSSpec f;
- AEKeyword keyword;
- Size actual;
- long len;
- char s[1000];
-
- chk(AEGetParamDesc(event, keyDirectObject, typeAEList, &list));
- chk(AECountItems(&list, &len));
- chk(AEGetNthPtr(&list, 1, typeFSS, &keyword, &type, (Ptr*)&f, sizeof(FSSpec), &actual));
- chk(GetFullPathname(&f, s, sizeof s));
- printf("%s\n", s);
- fflush(stdout);
-
- // uncomment to keep handling more open events
- exit(0);
-}