Added my "open" command to the repository.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2847 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
d62fee5142
commit
1104b1b0f6
@ -11,6 +11,7 @@ StdBinCommands
|
||||
listattr.cpp
|
||||
lsindex.cpp
|
||||
modifiers.cpp
|
||||
open.cpp
|
||||
quit.cpp
|
||||
setversion.cpp
|
||||
shutdown.cpp
|
||||
|
55
src/apps/bin/open.cpp
Normal file
55
src/apps/bin/open.cpp
Normal file
@ -0,0 +1,55 @@
|
||||
/* Launches an application/document from the shell
|
||||
**
|
||||
** Copyright 2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
|
||||
** Distributed under the terms of the OpenBeOS License.
|
||||
*/
|
||||
|
||||
#include <InterfaceDefs.h>
|
||||
#include <Roster.h>
|
||||
#include <Entry.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
char *progName = argv[0];
|
||||
if (strrchr(progName, '/'))
|
||||
progName = strrchr(progName, '/') + 1;
|
||||
|
||||
if (argc < 2)
|
||||
fprintf(stderr,"usage: %s <file or application signature> ...\n", progName);
|
||||
|
||||
BRoster roster;
|
||||
|
||||
while (*++argv) {
|
||||
status_t rc;
|
||||
|
||||
BEntry entry(*argv);
|
||||
if ((rc = entry.InitCheck()) == B_OK && entry.Exists()) {
|
||||
entry_ref ref;
|
||||
entry.GetRef(&ref);
|
||||
|
||||
BMessenger tracker("application/x-vnd.Be-TRAK");
|
||||
if (tracker.IsValid()) {
|
||||
BMessage message(B_REFS_RECEIVED);
|
||||
message.AddRef("refs", &ref);
|
||||
|
||||
tracker.SendMessage(&message);
|
||||
} else
|
||||
rc = roster.Launch(&ref);
|
||||
} else if (!strncasecmp("application/", *argv, 12)) {
|
||||
// maybe it's an application-mimetype?
|
||||
rc = roster.Launch(*argv);
|
||||
} else if (rc == B_OK)
|
||||
rc = B_ENTRY_NOT_FOUND;
|
||||
|
||||
if (rc != B_OK)
|
||||
fprintf(stderr, "%s: \"%s\": %s\n", progName, *argv, strerror(rc));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user