Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
steam
systemd
Commits
77930f11
Commit
77930f11
authored
Apr 14, 2013
by
Lennart Poettering
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kdbus: also parse cmdline message attribute
parent
75722f1d
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
60 additions
and
0 deletions
+60
-0
src/libsystemd-bus/bus-kernel.c
src/libsystemd-bus/bus-kernel.c
+5
-0
src/libsystemd-bus/bus-message.c
src/libsystemd-bus/bus-message.c
+49
-0
src/libsystemd-bus/bus-message.h
src/libsystemd-bus/bus-message.h
+5
-0
src/systemd/sd-bus.h
src/systemd/sd-bus.h
+1
-0
No files found.
src/libsystemd-bus/bus-kernel.c
View file @
77930f11
...
...
@@ -371,6 +371,11 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess
m
->
tid_comm
=
d
->
str
;
else
if
(
d
->
type
==
KDBUS_MSG_SRC_EXE
)
m
->
exe
=
d
->
str
;
else
if
(
d
->
type
==
KDBUS_MSG_SRC_CMDLINE
)
{
m
->
cmdline
=
d
->
str
;
m
->
cmdline_length
=
l
;
}
else
log_debug
(
"Got unknown field from kernel %llu"
,
d
->
type
);
}
r
=
bus_message_parse_fields
(
m
);
...
...
src/libsystemd-bus/bus-message.c
View file @
77930f11
...
...
@@ -70,6 +70,8 @@ static void message_free(sd_bus_message *m) {
free
(
m
->
fds
);
}
free
(
m
->
cmdline_array
);
reset_containers
(
m
);
free
(
m
->
root_container
.
signature
);
...
...
@@ -752,6 +754,38 @@ const char *sd_bus_message_get_exe(sd_bus_message *m) {
return
m
->
exe
;
}
int
sd_bus_message_get_cmdline
(
sd_bus_message
*
m
,
char
***
cmdline
)
{
size_t
n
,
i
;
const
char
*
p
;
bool
first
;
if
(
!
m
)
return
-
EINVAL
;
if
(
!
m
->
cmdline
)
return
-
ENOENT
;
for
(
p
=
m
->
cmdline
,
n
=
0
;
p
<
m
->
cmdline
+
m
->
cmdline_length
;
p
++
)
if
(
*
p
==
0
)
n
++
;
m
->
cmdline_array
=
new
(
char
*
,
n
+
1
);
if
(
!
m
->
cmdline_array
)
return
-
ENOMEM
;
for
(
p
=
m
->
cmdline
,
i
=
0
,
first
=
true
;
p
<
m
->
cmdline
+
m
->
cmdline_length
;
p
++
)
{
if
(
first
)
m
->
cmdline_array
[
i
++
]
=
(
char
*
)
p
;
first
=
*
p
==
0
;
}
m
->
cmdline_array
[
i
]
=
NULL
;
*
cmdline
=
m
->
cmdline_array
;
return
0
;
}
int
sd_bus_message_is_signal
(
sd_bus_message
*
m
,
const
char
*
interface
,
const
char
*
member
)
{
if
(
!
m
)
return
-
EINVAL
;
...
...
@@ -2928,6 +2962,7 @@ int sd_bus_message_set_destination(sd_bus_message *m, const char *destination) {
}
int
bus_message_dump
(
sd_bus_message
*
m
)
{
char
**
cmdline
=
NULL
;
unsigned
level
=
1
;
int
r
;
...
...
@@ -2995,6 +3030,20 @@ int bus_message_dump(sd_bus_message *m) {
if
(
m
->
label
)
printf
(
"
\t
label=[%s]
\n
"
,
m
->
label
);
if
(
sd_bus_message_get_cmdline
(
m
,
&
cmdline
)
>=
0
)
{
char
**
c
;
fputs
(
"
\t
cmdline=["
,
stdout
);
STRV_FOREACH
(
c
,
cmdline
)
{
if
(
c
!=
cmdline
)
putchar
(
' '
);
fputs
(
*
c
,
stdout
);
}
fputs
(
"]
\n
"
,
stdout
);
}
r
=
sd_bus_message_rewind
(
m
,
true
);
if
(
r
<
0
)
{
log_error
(
"Failed to rewind: %s"
,
strerror
(
-
r
));
...
...
src/libsystemd-bus/bus-message.h
View file @
77930f11
...
...
@@ -110,6 +110,11 @@ struct sd_bus_message {
const
char
*
exe
;
const
char
*
comm
;
const
char
*
tid_comm
;
const
char
*
cmdline
;
size_t
cmdline_length
;
char
**
cmdline_array
;
};
#define BUS_MESSAGE_NEED_BSWAP(m) ((m)->header->endian != SD_BUS_NATIVE_ENDIAN)
...
...
src/systemd/sd-bus.h
View file @
77930f11
...
...
@@ -134,6 +134,7 @@ const char *sd_bus_message_get_selinux_context(sd_bus_message *m);
const
char
*
sd_bus_message_get_comm
(
sd_bus_message
*
m
);
const
char
*
sd_bus_message_get_tid_comm
(
sd_bus_message
*
m
);
const
char
*
sd_bus_message_get_exe
(
sd_bus_message
*
m
);
int
sd_bus_message_get_cmdline
(
sd_bus_message
*
m
,
char
***
cmdline
);
int
sd_bus_message_is_signal
(
sd_bus_message
*
m
,
const
char
*
interface
,
const
char
*
member
);
int
sd_bus_message_is_method_call
(
sd_bus_message
*
m
,
const
char
*
interface
,
const
char
*
member
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment