2010-08-07 12:05:16 -04:00
|
|
|
|
/*
|
2011-10-25 16:19:38 -04:00
|
|
|
|
* vim:ts=4:sw=4:expandtab
|
2010-08-07 12:05:16 -04:00
|
|
|
|
*
|
2011-10-25 16:19:38 -04:00
|
|
|
|
* i3bar - an xcb-based status- and ws-bar for i3
|
2012-08-23 06:55:28 -04:00
|
|
|
|
* © 2010-2012 Axel Wagner and contributors (see also: LICENSE)
|
2010-08-07 12:05:16 -04:00
|
|
|
|
*
|
2011-10-25 16:19:38 -04:00
|
|
|
|
* child.c: Getting Input for the statusline
|
2010-08-07 12:05:16 -04:00
|
|
|
|
*
|
|
|
|
|
*/
|
2010-08-04 23:09:59 -04:00
|
|
|
|
#ifndef CHILD_H_
|
|
|
|
|
#define CHILD_H_
|
|
|
|
|
|
2012-08-20 16:20:37 -04:00
|
|
|
|
#include <stdbool.h>
|
|
|
|
|
|
2010-08-04 23:09:59 -04:00
|
|
|
|
#define STDIN_CHUNK_SIZE 1024
|
|
|
|
|
|
2012-09-03 04:23:25 -04:00
|
|
|
|
typedef struct {
|
|
|
|
|
pid_t pid;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The version number is an uint32_t to avoid machines with different sizes of
|
|
|
|
|
* 'int' to allow different values here. It’s highly unlikely we ever exceed
|
|
|
|
|
* even an int8_t, but still…
|
|
|
|
|
*/
|
|
|
|
|
uint32_t version;
|
2012-08-20 16:20:37 -04:00
|
|
|
|
|
|
|
|
|
bool stopped;
|
|
|
|
|
/**
|
|
|
|
|
* The signal requested by the client to inform it of the hidden state of i3bar
|
|
|
|
|
*/
|
|
|
|
|
int stop_signal;
|
|
|
|
|
/**
|
|
|
|
|
* The signal requested by the client to inform it of theun hidden state of i3bar
|
|
|
|
|
*/
|
|
|
|
|
int cont_signal;
|
2012-09-03 04:23:25 -04:00
|
|
|
|
} i3bar_child;
|
|
|
|
|
|
2010-08-06 20:10:05 -04:00
|
|
|
|
/*
|
|
|
|
|
* Start a child-process with the specified command and reroute stdin.
|
|
|
|
|
* We actually start a $SHELL to execute the command so we don't have to care
|
|
|
|
|
* about arguments and such
|
|
|
|
|
*
|
|
|
|
|
*/
|
2010-08-04 23:09:59 -04:00
|
|
|
|
void start_child(char *command);
|
2010-08-06 20:10:05 -04:00
|
|
|
|
|
|
|
|
|
/*
|
2012-03-26 11:36:00 -04:00
|
|
|
|
* kill()s the child-process (if any). Called when exit()ing.
|
|
|
|
|
*
|
|
|
|
|
*/
|
2012-08-23 06:55:28 -04:00
|
|
|
|
void kill_child_at_exit(void);
|
2012-03-26 11:36:00 -04:00
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* kill()s the child-process (if any) and closes and
|
2010-08-06 20:10:05 -04:00
|
|
|
|
* free()s the stdin- and sigchild-watchers
|
|
|
|
|
*
|
|
|
|
|
*/
|
2012-08-23 06:55:28 -04:00
|
|
|
|
void kill_child(void);
|
2010-08-04 23:09:59 -04:00
|
|
|
|
|
2010-08-25 12:31:03 -04:00
|
|
|
|
/*
|
|
|
|
|
* Sends a SIGSTOP to the child-process (if existent)
|
|
|
|
|
*
|
|
|
|
|
*/
|
2012-08-23 06:55:28 -04:00
|
|
|
|
void stop_child(void);
|
2010-08-25 12:31:03 -04:00
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Sends a SIGCONT to the child-process (if existent)
|
|
|
|
|
*
|
|
|
|
|
*/
|
2012-08-23 06:55:28 -04:00
|
|
|
|
void cont_child(void);
|
2010-08-25 12:31:03 -04:00
|
|
|
|
|
2010-08-04 23:09:59 -04:00
|
|
|
|
#endif
|