1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-02 03:52:49 -05:00

Minimal shell of PuTTYgen for Mac. No actual PuTTYgen-specific code there

yet, but an absence of PuTTY-specific code.

[originally from svn r2842]
This commit is contained in:
Ben Harris
2003-02-12 23:53:15 +00:00
parent a427048b29
commit 8dcbb16ec2
7 changed files with 1309 additions and 172 deletions

119
mac/mac.c
View File

@ -1,4 +1,4 @@
/* $Id: mac.c,v 1.47 2003/02/07 01:38:12 ben Exp $ */
/* $Id: mac.c,v 1.48 2003/02/12 23:53:15 ben Exp $ */
/*
* Copyright (c) 1999 Ben Harris
* All rights reserved.
@ -63,18 +63,6 @@
#include "ssh.h"
#include "mac.h"
#if TARGET_API_MAC_CARBON
/*
* This is used by (I think) CarbonStdCLib, but only exists in
* CarbonLib 1.1 and later. Muppets. Happily, it's documented to be
* a synonym for NULL.
*/
#include <CFBase.h>
const CFAllocatorRef kCFAllocatorDefault = NULL;
#else
QDGlobals qd;
#endif
Session *sesslist;
static int cold = 1;
@ -773,32 +761,6 @@ void cleanup_exit(int status)
exit(status);
}
void fatalbox(char *fmt, ...) {
va_list ap;
Str255 stuff;
va_start(ap, fmt);
/* We'd like stuff to be a Pascal string */
stuff[0] = vsprintf((char *)(&stuff[1]), fmt, ap);
va_end(ap);
ParamText(stuff, NULL, NULL, NULL);
StopAlert(128, NULL);
cleanup_exit(1);
}
void modalfatalbox(char *fmt, ...) {
va_list ap;
Str255 stuff;
va_start(ap, fmt);
/* We'd like stuff to be a Pascal string */
stuff[0] = vsprintf((char *)(&stuff[1]), fmt, ap);
va_end(ap);
ParamText(stuff, NULL, NULL, NULL);
StopAlert(128, NULL);
cleanup_exit(1);
}
/* This should only kill the current session, not the whole application. */
void connection_fatal(void *fontend, char *fmt, ...) {
va_list ap;
@ -906,85 +868,6 @@ void platform_get_x11_auth(char *display, int *proto,
/* SGT: I have no idea whether Mac X servers need anything here. */
}
Filename filename_from_str(const char *str)
{
Filename ret;
Str255 tmp;
/* XXX This fails for filenames over 255 characters long. */
c2pstrcpy(tmp, str);
FSMakeFSSpec(0, 0, tmp, &ret.fss);
return ret;
}
/*
* Convert a filename to a string for display purposes.
* See pp 2-44--2-46 of IM:Files
*
* XXX static storage considered harmful
*/
const char *filename_to_str(const Filename *fn)
{
CInfoPBRec pb;
Str255 dirname;
OSErr err;
static char *path = NULL;
char *newpath;
if (path != NULL) sfree(path);
path = smalloc(fn->fss.name[0]);
p2cstrcpy(path, fn->fss.name);
pb.dirInfo.ioNamePtr = dirname;
pb.dirInfo.ioVRefNum = fn->fss.vRefNum;
pb.dirInfo.ioDrParID = fn->fss.parID;
pb.dirInfo.ioFDirIndex = -1;
do {
pb.dirInfo.ioDrDirID = pb.dirInfo.ioDrParID;
err = PBGetCatInfoSync(&pb);
/* XXX Assume not A/UX */
newpath = smalloc(strlen(path) + dirname[0] + 2);
p2cstrcpy(newpath, dirname);
strcat(newpath, ":");
strcat(newpath, path);
sfree(path);
path = newpath;
} while (pb.dirInfo.ioDrDirID != fsRtDirID);
return path;
}
int filename_equal(Filename f1, Filename f2)
{
return f1.fss.vRefNum == f2.fss.vRefNum &&
f1.fss.parID == f2.fss.parID &&
f1.fss.name[0] == f2.fss.name[0] &&
memcmp(f1.fss.name + 1, f2.fss.name + 1, f1.fss.name[0]) == 0;
}
int filename_is_null(Filename fn)
{
return fn.fss.vRefNum == 0 && fn.fss.parID == 0 && fn.fss.name[0] == 0;
}
FILE *f_open(Filename fn, char const *mode)
{
short savevol;
long savedir;
char tmp[256];
FILE *ret;
HGetVol(NULL, &savevol, &savedir);
if (HSetVol(NULL, fn.fss.vRefNum, fn.fss.parID) == noErr) {
p2cstrcpy(tmp, fn.fss.name);
ret = fopen(tmp, mode);
} else
ret = NULL;
HSetVol(NULL, savevol, savedir);
return ret;
}
/*
* Local Variables:
* c-file-style: "simon"