SBLaunchInfo.cpp revision 285101
1187692Snwhitehorn//===-- SBLaunchInfo.cpp ----------------------------------------*- C++ -*-===//
2187692Snwhitehorn//
3187692Snwhitehorn//                     The LLVM Compiler Infrastructure
4187692Snwhitehorn//
5187692Snwhitehorn// This file is distributed under the University of Illinois Open Source
6187692Snwhitehorn// License. See LICENSE.TXT for details.
7187692Snwhitehorn//
8187692Snwhitehorn//===----------------------------------------------------------------------===//
9187692Snwhitehorn
10187692Snwhitehorn#include "lldb/API/SBLaunchInfo.h"
11187692Snwhitehorn
12187692Snwhitehorn#include "lldb/API/SBFileSpec.h"
13187692Snwhitehorn#include "lldb/API/SBListener.h"
14187692Snwhitehorn#include "lldb/Target/ProcessLaunchInfo.h"
15187692Snwhitehorn
16187692Snwhitehornusing namespace lldb;
17187692Snwhitehornusing namespace lldb_private;
18187692Snwhitehorn
19187692SnwhitehornSBLaunchInfo::SBLaunchInfo (const char **argv) :
20187692Snwhitehorn    m_opaque_sp(new ProcessLaunchInfo())
21187692Snwhitehorn{
22187692Snwhitehorn    m_opaque_sp->GetFlags().Reset (eLaunchFlagDebug | eLaunchFlagDisableASLR);
23187692Snwhitehorn    if (argv && argv[0])
24187692Snwhitehorn        m_opaque_sp->GetArguments().SetArguments(argv);
25187692Snwhitehorn}
26187692Snwhitehorn
27187692SnwhitehornSBLaunchInfo::~SBLaunchInfo()
28187692Snwhitehorn{
29187692Snwhitehorn}
30187692Snwhitehorn
31187692Snwhitehornlldb_private::ProcessLaunchInfo &
32187692SnwhitehornSBLaunchInfo::ref ()
33187692Snwhitehorn{
34187692Snwhitehorn    return *m_opaque_sp;
35187692Snwhitehorn}
36187692Snwhitehorn
37187692Snwhitehornconst lldb_private::ProcessLaunchInfo &
38187692SnwhitehornSBLaunchInfo::ref () const
39187692Snwhitehorn{
40187692Snwhitehorn    return *m_opaque_sp;
41187692Snwhitehorn}
42187692Snwhitehorn
43187692Snwhitehornlldb::pid_t
44187692SnwhitehornSBLaunchInfo::GetProcessID()
45187692Snwhitehorn{
46187692Snwhitehorn    return m_opaque_sp->GetProcessID();
47187692Snwhitehorn}
48187692Snwhitehorn
49187692Snwhitehornuint32_t
50187692SnwhitehornSBLaunchInfo::GetUserID()
51187692Snwhitehorn{
52187692Snwhitehorn    return m_opaque_sp->GetUserID();
53187692Snwhitehorn}
54187692Snwhitehorn
55187692Snwhitehornuint32_t
56187692SnwhitehornSBLaunchInfo::GetGroupID()
57187692Snwhitehorn{
58187692Snwhitehorn    return m_opaque_sp->GetGroupID();
59187692Snwhitehorn}
60187692Snwhitehorn
61187692Snwhitehornbool
62187692SnwhitehornSBLaunchInfo::UserIDIsValid ()
63187692Snwhitehorn{
64187692Snwhitehorn    return m_opaque_sp->UserIDIsValid();
65187692Snwhitehorn}
66187692Snwhitehorn
67187692Snwhitehornbool
68187692SnwhitehornSBLaunchInfo::GroupIDIsValid ()
69187692Snwhitehorn{
70187692Snwhitehorn    return m_opaque_sp->GroupIDIsValid();
71187692Snwhitehorn}
72187692Snwhitehorn
73187692Snwhitehornvoid
74187692SnwhitehornSBLaunchInfo::SetUserID (uint32_t uid)
75193640Sariff{
76193640Sariff    m_opaque_sp->SetUserID (uid);
77193640Sariff}
78193640Sariff
79193640Sariffvoid
80187692SnwhitehornSBLaunchInfo::SetGroupID (uint32_t gid)
81187692Snwhitehorn{
82193640Sariff    m_opaque_sp->SetGroupID (gid);
83187692Snwhitehorn}
84187692Snwhitehorn
85187692SnwhitehornSBFileSpec
86187692SnwhitehornSBLaunchInfo::GetExecutableFile ()
87187692Snwhitehorn{
88187692Snwhitehorn    return SBFileSpec (m_opaque_sp->GetExecutableFile());
89187692Snwhitehorn}
90187692Snwhitehorn
91187692Snwhitehornvoid
92187692SnwhitehornSBLaunchInfo::SetExecutableFile (SBFileSpec exe_file, bool add_as_first_arg)
93187692Snwhitehorn{
94187692Snwhitehorn    m_opaque_sp->SetExecutableFile(exe_file.ref(), add_as_first_arg);
95187692Snwhitehorn}
96187692Snwhitehorn
97187692SnwhitehornSBListener
98187692SnwhitehornSBLaunchInfo::GetListener ()
99187692Snwhitehorn{
100187692Snwhitehorn    return SBListener(m_opaque_sp->GetListener());
101187692Snwhitehorn}
102187692Snwhitehorn
103187692Snwhitehornvoid
104187692SnwhitehornSBLaunchInfo::SetListener (SBListener &listener)
105187692Snwhitehorn{
106187692Snwhitehorn    m_opaque_sp->SetListener(listener.GetSP());
107187692Snwhitehorn}
108187692Snwhitehorn
109187692Snwhitehornuint32_t
110187692SnwhitehornSBLaunchInfo::GetNumArguments ()
111187692Snwhitehorn{
112187692Snwhitehorn    return m_opaque_sp->GetArguments().GetArgumentCount();
113187692Snwhitehorn}
114187692Snwhitehorn
115187692Snwhitehornconst char *
116187692SnwhitehornSBLaunchInfo::GetArgumentAtIndex (uint32_t idx)
117187692Snwhitehorn{
118187692Snwhitehorn    return m_opaque_sp->GetArguments().GetArgumentAtIndex(idx);
119187717Snwhitehorn}
120187692Snwhitehorn
121187692Snwhitehornvoid
122187692SnwhitehornSBLaunchInfo::SetArguments (const char **argv, bool append)
123187692Snwhitehorn{
124187692Snwhitehorn    if (append)
125187692Snwhitehorn    {
126187692Snwhitehorn        if (argv)
127187692Snwhitehorn            m_opaque_sp->GetArguments().AppendArguments(argv);
128187692Snwhitehorn    }
129187692Snwhitehorn    else
130187692Snwhitehorn    {
131187692Snwhitehorn        if (argv)
132187692Snwhitehorn            m_opaque_sp->GetArguments().SetArguments(argv);
133187692Snwhitehorn        else
134187692Snwhitehorn            m_opaque_sp->GetArguments().Clear();
135187692Snwhitehorn    }
136187692Snwhitehorn}
137187692Snwhitehorn
138187692Snwhitehornuint32_t
139187692SnwhitehornSBLaunchInfo::GetNumEnvironmentEntries ()
140187692Snwhitehorn{
141187692Snwhitehorn    return m_opaque_sp->GetEnvironmentEntries().GetArgumentCount();
142187692Snwhitehorn}
143187692Snwhitehorn
144187692Snwhitehornconst char *
145187692SnwhitehornSBLaunchInfo::GetEnvironmentEntryAtIndex (uint32_t idx)
146187692Snwhitehorn{
147187692Snwhitehorn    return m_opaque_sp->GetEnvironmentEntries().GetArgumentAtIndex(idx);
148187692Snwhitehorn}
149187692Snwhitehorn
150187692Snwhitehornvoid
151187692SnwhitehornSBLaunchInfo::SetEnvironmentEntries (const char **envp, bool append)
152187692Snwhitehorn{
153187692Snwhitehorn    if (append)
154187692Snwhitehorn    {
155187692Snwhitehorn        if (envp)
156187692Snwhitehorn            m_opaque_sp->GetEnvironmentEntries().AppendArguments(envp);
157187692Snwhitehorn    }
158187692Snwhitehorn    else
159187692Snwhitehorn    {
160187692Snwhitehorn        if (envp)
161223554Snwhitehorn            m_opaque_sp->GetEnvironmentEntries().SetArguments(envp);
162223554Snwhitehorn        else
163187692Snwhitehorn            m_opaque_sp->GetEnvironmentEntries().Clear();
164187692Snwhitehorn    }
165187692Snwhitehorn}
166187692Snwhitehorn
167187692Snwhitehornvoid
168187692SnwhitehornSBLaunchInfo::Clear ()
169187692Snwhitehorn{
170223554Snwhitehorn    m_opaque_sp->Clear();
171223554Snwhitehorn}
172223554Snwhitehorn
173223554Snwhitehornconst char *
174223554SnwhitehornSBLaunchInfo::GetWorkingDirectory () const
175223554Snwhitehorn{
176223554Snwhitehorn    return m_opaque_sp->GetWorkingDirectory().GetCString();
177223554Snwhitehorn}
178223554Snwhitehorn
179223554Snwhitehornvoid
180187692SnwhitehornSBLaunchInfo::SetWorkingDirectory (const char *working_dir)
181187692Snwhitehorn{
182187692Snwhitehorn    m_opaque_sp->SetWorkingDirectory(FileSpec{working_dir, false});
183187692Snwhitehorn}
184187692Snwhitehorn
185187692Snwhitehornuint32_t
186187692SnwhitehornSBLaunchInfo::GetLaunchFlags ()
187187692Snwhitehorn{
188187692Snwhitehorn    return m_opaque_sp->GetFlags().Get();
189187692Snwhitehorn}
190187692Snwhitehorn
191187717Snwhitehornvoid
192187692SnwhitehornSBLaunchInfo::SetLaunchFlags (uint32_t flags)
193187692Snwhitehorn{
194187692Snwhitehorn    m_opaque_sp->GetFlags().Reset(flags);
195187692Snwhitehorn}
196187717Snwhitehorn
197187717Snwhitehornconst char *
198187692SnwhitehornSBLaunchInfo::GetProcessPluginName ()
199188259Snwhitehorn{
200187692Snwhitehorn    return m_opaque_sp->GetProcessPluginName();
201187692Snwhitehorn}
202187692Snwhitehorn
203187692Snwhitehornvoid
204187692SnwhitehornSBLaunchInfo::SetProcessPluginName (const char *plugin_name)
205187692Snwhitehorn{
206187692Snwhitehorn    return m_opaque_sp->SetProcessPluginName (plugin_name);
207187692Snwhitehorn}
208187692Snwhitehorn
209187692Snwhitehornconst char *
210187692SnwhitehornSBLaunchInfo::GetShell ()
211187692Snwhitehorn{
212187692Snwhitehorn    // Constify this string so that it is saved in the string pool.  Otherwise
213187692Snwhitehorn    // it would be freed when this function goes out of scope.
214187692Snwhitehorn    ConstString shell(m_opaque_sp->GetShell().GetPath().c_str());
215187692Snwhitehorn    return shell.AsCString();
216187692Snwhitehorn}
217187692Snwhitehorn
218187692Snwhitehornvoid
219187692SnwhitehornSBLaunchInfo::SetShell (const char * path)
220187692Snwhitehorn{
221187692Snwhitehorn    m_opaque_sp->SetShell (FileSpec(path, false));
222187692Snwhitehorn}
223187692Snwhitehorn
224187692Snwhitehornbool
225187692SnwhitehornSBLaunchInfo::GetShellExpandArguments ()
226187692Snwhitehorn{
227187692Snwhitehorn    return m_opaque_sp->GetShellExpandArguments();
228187692Snwhitehorn}
229187692Snwhitehorn
230187692Snwhitehornvoid
231187692SnwhitehornSBLaunchInfo::SetShellExpandArguments (bool expand)
232187692Snwhitehorn{
233187692Snwhitehorn    m_opaque_sp->SetShellExpandArguments(expand);
234187692Snwhitehorn}
235187692Snwhitehorn
236188259Snwhitehornuint32_t
237188259SnwhitehornSBLaunchInfo::GetResumeCount ()
238187692Snwhitehorn{
239187692Snwhitehorn    return m_opaque_sp->GetResumeCount();
240187692Snwhitehorn}
241187692Snwhitehorn
242187692Snwhitehornvoid
243187692SnwhitehornSBLaunchInfo::SetResumeCount (uint32_t c)
244187692Snwhitehorn{
245187692Snwhitehorn    m_opaque_sp->SetResumeCount (c);
246187692Snwhitehorn}
247187692Snwhitehorn
248187692Snwhitehornbool
249187692SnwhitehornSBLaunchInfo::AddCloseFileAction (int fd)
250187692Snwhitehorn{
251187692Snwhitehorn    return m_opaque_sp->AppendCloseFileAction(fd);
252187692Snwhitehorn}
253188259Snwhitehorn
254187692Snwhitehornbool
255187692SnwhitehornSBLaunchInfo::AddDuplicateFileAction (int fd, int dup_fd)
256187692Snwhitehorn{
257187692Snwhitehorn    return m_opaque_sp->AppendDuplicateFileAction(fd, dup_fd);
258188259Snwhitehorn}
259187692Snwhitehorn
260187692Snwhitehornbool
261187692SnwhitehornSBLaunchInfo::AddOpenFileAction (int fd, const char *path, bool read, bool write)
262187692Snwhitehorn{
263187692Snwhitehorn    return m_opaque_sp->AppendOpenFileAction(fd, FileSpec{path, false}, read, write);
264187692Snwhitehorn}
265187692Snwhitehorn
266187692Snwhitehornbool
267187692SnwhitehornSBLaunchInfo::AddSuppressFileAction (int fd, bool read, bool write)
268187692Snwhitehorn{
269187692Snwhitehorn    return m_opaque_sp->AppendSuppressFileAction(fd, read, write);
270187692Snwhitehorn}
271187692Snwhitehorn
272187692Snwhitehornvoid
273187692SnwhitehornSBLaunchInfo::SetLaunchEventData (const char *data)
274187692Snwhitehorn{
275187692Snwhitehorn    m_opaque_sp->SetLaunchEventData (data);
276187692Snwhitehorn}
277187692Snwhitehorn
278187692Snwhitehornconst char *
279187692SnwhitehornSBLaunchInfo::GetLaunchEventData () const
280187692Snwhitehorn{
281187692Snwhitehorn    return m_opaque_sp->GetLaunchEventData ();
282187692Snwhitehorn}
283187692Snwhitehorn
284187692Snwhitehornvoid
285187692SnwhitehornSBLaunchInfo::SetDetachOnError (bool enable)
286187692Snwhitehorn{
287187692Snwhitehorn    m_opaque_sp->SetDetachOnError (enable);
288187692Snwhitehorn}
289187692Snwhitehorn
290187692Snwhitehornbool
291187692SnwhitehornSBLaunchInfo::GetDetachOnError () const
292187692Snwhitehorn{
293187692Snwhitehorn    return m_opaque_sp->GetDetachOnError ();
294187692Snwhitehorn}
295187692Snwhitehorn