mirror of
https://github.com/autc04/Retro68.git
synced 2025-02-17 11:31:00 +00:00
LaunchAPPLServer: remote upgrade capability
This commit is contained in:
parent
569ef3d65e
commit
f1fd304af4
@ -128,6 +128,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
desc.add_options()
|
||||
("timeout,t", po::value<int>(),"abort after timeout")
|
||||
("upgrade-server", "upgrade the server application")
|
||||
;
|
||||
po::options_description hidden, alldesc;
|
||||
hidden.add_options()
|
||||
|
@ -36,6 +36,7 @@ class SerialLauncher : public Launcher
|
||||
SerialStream stream;
|
||||
ReliableStream rStream;
|
||||
std::vector<char> outputBytes;
|
||||
bool upgradeMode = false;
|
||||
public:
|
||||
SerialLauncher(po::variables_map& options);
|
||||
virtual ~SerialLauncher();
|
||||
@ -131,6 +132,8 @@ void SerialStream::wait()
|
||||
SerialLauncher::SerialLauncher(po::variables_map &options)
|
||||
: Launcher(options), stream(options), rStream(&stream)
|
||||
{
|
||||
if(options.count("upgrade-server"))
|
||||
upgradeMode = true;
|
||||
}
|
||||
|
||||
SerialLauncher::~SerialLauncher()
|
||||
@ -174,7 +177,7 @@ bool SerialLauncher::Go(int timeout)
|
||||
std::cerr << "Connected." << std::endl;
|
||||
|
||||
{
|
||||
RemoteCommand cmd = RemoteCommand::launchApp;
|
||||
RemoteCommand cmd = upgradeMode ? RemoteCommand::upgradeLauncher : RemoteCommand::launchApp;
|
||||
write(&cmd, 1);
|
||||
|
||||
write(std::string(app.type).data(), 4);
|
||||
@ -199,13 +202,12 @@ bool SerialLauncher::Go(int timeout)
|
||||
std::cerr << "Running Appliation..." << std::endl;
|
||||
read(&tmp, 4);
|
||||
uint32_t result = ntohl(tmp);
|
||||
std::cerr << "Finished." << std::endl;
|
||||
std::cerr << "Finished (result = " << result << ")." << std::endl;
|
||||
|
||||
if(result == 0)
|
||||
{
|
||||
read(&tmp, 4);
|
||||
uint32_t size = ntohl(tmp);
|
||||
|
||||
outputBytes.resize(size);
|
||||
if(size > 0)
|
||||
read(outputBytes.data(), size);
|
||||
|
@ -4,5 +4,6 @@
|
||||
|
||||
enum class RemoteCommand : uint8_t
|
||||
{
|
||||
launchApp = 1
|
||||
launchApp = 1,
|
||||
upgradeLauncher = 2
|
||||
};
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include <Dialogs.h>
|
||||
#include <Devices.h>
|
||||
#include <Traps.h>
|
||||
#include <LowMem.h>
|
||||
|
||||
#include "MacSerialStream.h"
|
||||
#include "AppLauncher.h"
|
||||
@ -290,7 +291,7 @@ public:
|
||||
if(n < 1)
|
||||
return 0;
|
||||
command = (RemoteCommand)p[0];
|
||||
if(command == RemoteCommand::launchApp)
|
||||
if(command == RemoteCommand::launchApp || command == RemoteCommand::upgradeLauncher)
|
||||
state = State::header;
|
||||
return 1;
|
||||
}
|
||||
@ -538,6 +539,21 @@ int main()
|
||||
gSerialStream->close();
|
||||
gPrefs.inSubLaunch = true;
|
||||
WritePrefs();
|
||||
|
||||
if(server.command == RemoteCommand::upgradeLauncher)
|
||||
{
|
||||
FSDelete("\pLaunchAPPLServer.old", 0);
|
||||
Rename(LMGetCurApName(), 0, "\pLaunchAPPLServer.old");
|
||||
Rename("\pRetro68App", 0, LMGetCurApName());
|
||||
|
||||
LaunchParamBlockRec lpb;
|
||||
memset(&lpb, 0, sizeof(lpb));
|
||||
lpb.reserved1 = (unsigned long) LMGetCurApName();
|
||||
lpb.reserved2 = 0;
|
||||
OSErr err = LaunchApplication(&lpb);
|
||||
ExitToShell();
|
||||
}
|
||||
|
||||
bool launched = appLauncher->Launch("\pRetro68App");
|
||||
gPrefs.inSubLaunch = false;
|
||||
WritePrefs();
|
||||
|
Loading…
x
Reference in New Issue
Block a user