Author: mmu_man Date: 2009-11-07 00:47:53 +0100 (Sat, 07 Nov 2009) New Revision: 33926 Changeset: http://dev.haiku-os.org/changeset/33926/haiku Modified: haiku/trunk/src/bin/checkitout.cpp Log: - fix BeOS build, - add handling of svn: and svn+ssh: urls. Modified: haiku/trunk/src/bin/checkitout.cpp =================================================================== --- haiku/trunk/src/bin/checkitout.cpp 2009-11-06 22:14:11 UTC (rev 33925) +++ haiku/trunk/src/bin/checkitout.cpp 2009-11-06 23:47:53 UTC (rev 33926) @@ -31,9 +31,12 @@ const char* kAppSig = "application/x-vnd.Haiku-checkitout"; const char* kTrackerSig = "application/x-vnd.Be-TRAK"; +#if __HAIKU__ const char* kTerminalSig = "application/x-vnd.Haiku-Terminal"; +#else +const char* kTerminalSig = "application/x-vnd.Be-SHEL"; +#endif - CheckItOut::CheckItOut() : BApplication(kAppSig) { } @@ -74,7 +77,7 @@ bool modal = false, bool hideWhenDone = true); */ panel->Window()->SetTitle("Check It Out to..."); - panel->SetSaveText(name); + panel->SetSaveText(name.String()); panel->Show(); return B_OK; } @@ -97,7 +100,7 @@ BString name; msg->FindRef("directory", &ref); msg->FindString("name", &name); - _DoCheckItOut(&ref, name); + _DoCheckItOut(&ref, name.String()); break; } case B_CANCEL: @@ -110,8 +113,10 @@ void CheckItOut::ArgvReceived(int32 argc, char** argv) { - if (argc <= 1) + if (argc <= 1) { + exit(1); return; + } BPrivate::Support::BUrl url(argv[1]); fUrlString = url; @@ -152,7 +157,7 @@ const char* pausec = " ; read -p 'Press any key'"; 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 proto = url.Proto(); BString host = url.Host(); @@ -175,7 +180,19 @@ be_roster->Launch(kTerminalSig, 3, args); 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; }