]> jfr.im git - solanum.git/blobdiff - librb/src/helper.c
librb/helper: call rb_clear_cloexec on child fds
[solanum.git] / librb / src / helper.c
index 0e653deaf04e9dcc996b3058f716aa6f5a5041bb..ddc71343152a8bbe014265056af4263c5561d875 100644 (file)
@@ -19,8 +19,8 @@
  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
  *  USA
  *
- *  $Id: helper.c 26092 2008-09-19 15:13:52Z androsyn $
  */
+
 #include <librb_config.h>
 #include <rb_lib.h>
 #include <commio-int.h>
@@ -148,10 +148,8 @@ rb_helper_start(const char *name, const char *fullpath, rb_helper_cb * read_cb,
        parv[0] = buf;
        parv[1] = NULL;
 
-#ifdef _WIN32
-       SetHandleInformation((HANDLE) rb_get_fd(in_f[1]), HANDLE_FLAG_INHERIT, 1);
-       SetHandleInformation((HANDLE) rb_get_fd(out_f[0]), HANDLE_FLAG_INHERIT, 1);
-#endif
+       rb_clear_cloexec(in_f[1]);
+       rb_clear_cloexec(out_f[0]);
 
        pid = rb_spawn_process(fullpath, (const char **)parv);
 
@@ -214,8 +212,10 @@ void
 rb_helper_write_queue(rb_helper *helper, const char *format, ...)
 {
        va_list ap;
+       rb_strf_t strings = { .format = format, .format_args = &ap, .next = NULL };
+
        va_start(ap, format);
-       rb_linebuf_putmsg(&helper->sendq, format, &ap, NULL);
+       rb_linebuf_put(&helper->sendq, &strings);
        va_end(ap);
 }
 
@@ -230,14 +230,17 @@ void
 rb_helper_write(rb_helper *helper, const char *format, ...)
 {
        va_list ap;
+       rb_strf_t strings = { .format = format, .format_args = &ap, .next = NULL };
+
        va_start(ap, format);
-       rb_linebuf_putmsg(&helper->sendq, format, &ap, NULL);
+       rb_linebuf_put(&helper->sendq, &strings);
        va_end(ap);
+
        rb_helper_write_flush(helper);
 }
 
 static void
-rb_helper_read_cb(rb_fde_t *F, void *data)
+rb_helper_read_cb(rb_fde_t *F __attribute__((unused)), void *data)
 {
        rb_helper *helper = (rb_helper *)data;
        static char buf[32768];