- fix BeOS build,

- add handling of svn: and svn+ssh: urls.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33926 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
François Revol
2009-11-06 23:47:53 +00:00
parent 99c422fda8
commit 72e3211d51
+23 -6
View File
@@ -31,8 +31,11 @@
const char* kAppSig = "application/x-vnd.Haiku-checkitout"; const char* kAppSig = "application/x-vnd.Haiku-checkitout";
const char* kTrackerSig = "application/x-vnd.Be-TRAK"; const char* kTrackerSig = "application/x-vnd.Be-TRAK";
#if __HAIKU__
const char* kTerminalSig = "application/x-vnd.Haiku-Terminal"; const char* kTerminalSig = "application/x-vnd.Haiku-Terminal";
#else
const char* kTerminalSig = "application/x-vnd.Be-SHEL";
#endif
CheckItOut::CheckItOut() : BApplication(kAppSig) CheckItOut::CheckItOut() : BApplication(kAppSig)
{ {
@@ -74,7 +77,7 @@ CheckItOut::_FilePanel(uint32 nodeFlavors, BString &name)
bool modal = false, bool hideWhenDone = true); bool modal = false, bool hideWhenDone = true);
*/ */
panel->Window()->SetTitle("Check It Out to..."); panel->Window()->SetTitle("Check It Out to...");
panel->SetSaveText(name); panel->SetSaveText(name.String());
panel->Show(); panel->Show();
return B_OK; return B_OK;
} }
@@ -97,7 +100,7 @@ CheckItOut::MessageReceived(BMessage* msg)
BString name; BString name;
msg->FindRef("directory", &ref); msg->FindRef("directory", &ref);
msg->FindString("name", &name); msg->FindString("name", &name);
_DoCheckItOut(&ref, name); _DoCheckItOut(&ref, name.String());
break; break;
} }
case B_CANCEL: case B_CANCEL:
@@ -110,8 +113,10 @@ CheckItOut::MessageReceived(BMessage* msg)
void void
CheckItOut::ArgvReceived(int32 argc, char** argv) CheckItOut::ArgvReceived(int32 argc, char** argv)
{ {
if (argc <= 1) if (argc <= 1) {
exit(1);
return; return;
}
BPrivate::Support::BUrl url(argv[1]); BPrivate::Support::BUrl url(argv[1]);
fUrlString = url; fUrlString = url;
@@ -152,7 +157,7 @@ CheckItOut::_DoCheckItOut(entry_ref *ref, const char *name)
const char* pausec = " ; read -p 'Press any key'"; const char* pausec = " ; read -p 'Press any key'";
char* args[] = { (char *)"/bin/sh", (char *)"-c", NULL, NULL}; char* args[] = { (char *)"/bin/sh", (char *)"-c", NULL, NULL};
BPrivate::Support::BUrl url(fUrlString); BPrivate::Support::BUrl url(fUrlString.String());
BString full = url.Full(); BString full = url.Full();
BString proto = url.Proto(); BString proto = url.Proto();
BString host = url.Host(); BString host = url.Host();
@@ -175,7 +180,19 @@ printf("url %s\n", url.String());
be_roster->Launch(kTerminalSig, 3, args); be_roster->Launch(kTerminalSig, 3, args);
return B_OK; return B_OK;
} }
return B_OK; if (proto == "svn" || proto == "svn+ssh") {
BString cmd("svn checkout ");
cmd << url;
cmd << " '" << refPath.Path() << "/" << name << "'";
PRINT(("CMD='%s'\n", cmd.String()));
cmd << " && open '" << refPath.Path() << "/" << name << "'";
cmd << failc;
PRINT(("CMD='%s'\n", cmd.String()));
args[2] = (char*)cmd.String();
be_roster->Launch(kTerminalSig, 3, args);
return B_OK;
}
return B_ERROR;
} }