From 76362fb2c17543aa8ac97bb6877c2a52e41bcfa2 Mon Sep 17 00:00:00 2001 From: Dietrich Epp Date: Wed, 16 Nov 2022 18:32:52 -0500 Subject: [PATCH] Save aliases for local and remote directories Previously, the local and remote directories would not get saved with a project. This makes it so that alias data is populated for the local and remote directories. --- macos/project.c | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/macos/project.c b/macos/project.c index 430c787..437d070 100644 --- a/macos/project.c +++ b/macos/project.c @@ -12,6 +12,7 @@ #include "macos/strutil.h" #include "macos/tempfile.h" +#include #include #include @@ -545,24 +546,35 @@ static void ProjectChooseDir(WindowRef window, ProjectHandle project, struct Project *projectp; struct ProjectDir *dirp; FSSpec directory; + AliasHandle alias; Handle path; int pathLength; OSErr err; - if (ChooseDirectory(&directory)) { - err = GetDirPath(&directory, &pathLength, &path); - if (err != noErr) { - ExitErrorOS(kErrUnknown, err); - } - projectp = *project; - dirp = &projectp->dirs[whichDir]; - if (dirp->path != NULL) { - DisposeHandle(dirp->path); - } - dirp->pathLength = pathLength; - dirp->path = path; - InvalRect(&window->portRect); + if (!ChooseDirectory(&directory)) { + return; } + err = NewAlias(NULL, &directory, &alias); + if (err != noErr) { + ExitErrorOS(kErrUnknown, err); + } + err = GetDirPath(&directory, &pathLength, &path); + if (err != noErr) { + DisposeHandle((Handle)alias); + ExitErrorOS(kErrUnknown, err); + } + projectp = *project; + dirp = &projectp->dirs[whichDir]; + if (dirp->path != NULL) { + DisposeHandle(dirp->path); + } + dirp->pathLength = pathLength; + dirp->path = path; + if (dirp->alias != NULL) { + DisposeHandle((Handle)dirp->alias); + } + dirp->alias = alias; + InvalRect(&window->portRect); } void ProjectMouseDown(WindowRef window, ProjectHandle project,