Move the Mac port over to using snew/snewn/sresize.
[u/mdw/putty] / mac / macmisc.c
index a5cb1f5..7255b3d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: macmisc.c,v 1.1 2003/02/12 23:53:15 ben Exp $ */
+/* $Id: macmisc.c,v 1.3 2003/03/29 23:07:55 ben Exp $ */
 /*
  * Copyright (c) 1999, 2003 Ben Harris
  * All rights reserved.
@@ -28,6 +28,8 @@
 #include <MacTypes.h>
 #include <Dialogs.h>
 #include <Files.h>
+#include <MacWindows.h>
+#include <Processes.h>
 #include <Quickdraw.h>
 #include <TextUtils.h>
 
@@ -35,6 +37,7 @@
 #include <stdio.h>
 
 #include "putty.h"
+#include "mac.h"
 
 #if TARGET_API_MAC_CARBON
 /*
@@ -48,6 +51,22 @@ const CFAllocatorRef kCFAllocatorDefault = NULL;
 QDGlobals qd;
 #endif
 
+/*
+ * Like FrontWindow(), but return NULL if we aren't the front process
+ * (i.e. the front window isn't one of ours).
+ */
+WindowPtr mac_frontwindow(void)
+{
+    ProcessSerialNumber frontpsn;
+    ProcessSerialNumber curpsn = { 0, kCurrentProcess };
+    Boolean result;
+
+    GetFrontProcess(&frontpsn);
+    if (SameProcess(&frontpsn, &curpsn, &result) == noErr && result)
+       return FrontWindow();
+    return NULL;
+}
+
 void fatalbox(char *fmt, ...) {
     va_list ap;
     Str255 stuff;
@@ -100,7 +119,7 @@ const char *filename_to_str(const Filename *fn)
     char *newpath;
 
     if (path != NULL) sfree(path);
-    path = smalloc(fn->fss.name[0]);
+    path = snewn(fn->fss.name[0], char);
     p2cstrcpy(path, fn->fss.name);
     pb.dirInfo.ioNamePtr = dirname;
     pb.dirInfo.ioVRefNum = fn->fss.vRefNum;
@@ -111,7 +130,7 @@ const char *filename_to_str(const Filename *fn)
        err = PBGetCatInfoSync(&pb);
 
        /* XXX Assume not A/UX */
-       newpath = smalloc(strlen(path) + dirname[0] + 2);
+       newpath = snewn(strlen(path) + dirname[0] + 2, char);
        p2cstrcpy(newpath, dirname);
        strcat(newpath, ":");
        strcat(newpath, path);