xref: /haiku/src/apps/terminal/HyperLink.cpp (revision 1deede7388b04dbeec5af85cae7164735ea9e70d)
1 /*
2  * Copyright 2013, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 
6 
7 #include "HyperLink.h"
8 
9 #include <errno.h>
10 #include <stdlib.h>
11 
12 #include "TermConst.h"
13 
14 
15 HyperLink::HyperLink()
16 	:
17 	fAddress(),
18 	fType(TYPE_URL)
19 {
20 }
21 
22 
23 HyperLink::HyperLink(const BString& address, Type type)
24 	:
25 	fText(address),
26 	fAddress(address),
27 	fType(type)
28 {
29 }
30 
31 
32 HyperLink::HyperLink(const BString& text, const BString& address, Type type)
33 	:
34 	fText(text),
35 	fAddress(address),
36 	fType(type)
37 {
38 }
39 
40 
41 status_t
42 HyperLink::Open()
43 {
44 	if (!IsValid())
45 		return B_BAD_VALUE;
46 
47 	// open with the "open" program
48 	BString address(fAddress);
49 	address.CharacterEscape(kShellEscapeCharacters, '\\');
50 	BString commandLine;
51 	commandLine.SetToFormat("/bin/open %s", address.String());
52 	return system(commandLine) == 0 ? B_OK : errno;
53 }
54