aboutsummaryrefslogtreecommitdiffstats
path: root/sway/swaynag.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/swaynag.c')
-rw-r--r--sway/swaynag.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/sway/swaynag.c b/sway/swaynag.c
index ba582989..bc5e23ea 100644
--- a/sway/swaynag.c
+++ b/sway/swaynag.c
@@ -1,4 +1,3 @@
1#define _POSIX_C_SOURCE 200809L
2#include <signal.h> 1#include <signal.h>
3#include <stdbool.h> 2#include <stdbool.h>
4#include <stdlib.h> 3#include <stdlib.h>
@@ -64,6 +63,8 @@ bool swaynag_spawn(const char *swaynag_command,
64 sway_log(SWAY_ERROR, "Failed to create fork for swaynag"); 63 sway_log(SWAY_ERROR, "Failed to create fork for swaynag");
65 goto failed; 64 goto failed;
66 } else if (pid == 0) { 65 } else if (pid == 0) {
66 restore_nofile_limit();
67
67 pid = fork(); 68 pid = fork();
68 if (pid < 0) { 69 if (pid < 0) {
69 sway_log_errno(SWAY_ERROR, "fork failed"); 70 sway_log_errno(SWAY_ERROR, "fork failed");
@@ -143,22 +144,16 @@ void swaynag_log(const char *swaynag_command, struct swaynag_instance *swaynag,
143 144
144 va_list args; 145 va_list args;
145 va_start(args, fmt); 146 va_start(args, fmt);
146 size_t length = vsnprintf(NULL, 0, fmt, args) + 1; 147 char *str = vformat_str(fmt, args);
147 va_end(args); 148 va_end(args);
148 149 if (!str) {
149 char *temp = malloc(length + 1);
150 if (!temp) {
151 sway_log(SWAY_ERROR, "Failed to allocate buffer for swaynag log entry."); 150 sway_log(SWAY_ERROR, "Failed to allocate buffer for swaynag log entry.");
152 return; 151 return;
153 } 152 }
154 153
155 va_start(args, fmt); 154 write(swaynag->fd[1], str, strlen(str));
156 vsnprintf(temp, length, fmt, args);
157 va_end(args);
158
159 write(swaynag->fd[1], temp, length);
160 155
161 free(temp); 156 free(str);
162} 157}
163 158
164void swaynag_show(struct swaynag_instance *swaynag) { 159void swaynag_show(struct swaynag_instance *swaynag) {