i3
config_parser.c File Reference
#include "all.h"
#include <fcntl.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <libgen.h>
#include <xcb/xcb_xrm.h>
#include "GENERATED_config_enums.h"
#include "GENERATED_config_tokens.h"
#include "GENERATED_config_call.h"
Include dependency graph for config_parser.c:

Go to the source code of this file.

Data Structures

struct  token
 
struct  tokenptr
 

Typedefs

typedef struct token cmdp_token
 
typedef struct tokenptr cmdp_token_ptr
 

Functions

static void push_string (struct stack *ctx, const char *identifier, const char *str)
 
static void push_long (struct stack *ctx, const char *identifier, long num)
 
static const char * get_string (struct stack *ctx, const char *identifier)
 
static long get_long (struct stack *ctx, const char *identifier)
 
static void clear_stack (struct stack *ctx)
 
static void next_state (const cmdp_token *token, struct parser_ctx *ctx)
 
static const char * start_of_line (const char *walk, const char *beginning)
 
static char * single_line (const char *start)
 
static void parse_config (struct parser_ctx *ctx, const char *input, struct context *context)
 
void start_config_error_nagbar (const char *configpath, bool has_errors)
 Launch nagbar to indicate errors in the configuration file.
 
static void upsert_variable (struct variables_head *variables, char *key, char *value)
 
static char * get_resource (char *name)
 
void free_variables (struct parser_ctx *ctx)
 Releases the memory of all variables in ctx.
 
parse_file_result_t parse_file (struct parser_ctx *ctx, const char *f, IncludedFile *included_file)
 Parses the given file by first replacing the variables, then calling parse_config and launching i3-nagbar if use_nagbar is true.
 

Variables

xcb_xrm_database_t * database = NULL
 
pid_t config_error_nagbar_pid = -1
 

Typedef Documentation

◆ cmdp_token

typedef struct token cmdp_token

◆ cmdp_token_ptr

typedef struct tokenptr cmdp_token_ptr

Function Documentation

◆ clear_stack()

static void clear_stack ( struct stack * ctx)
static

Definition at line 154 of file config_parser.c.

References ctx.

Referenced by next_state(), and parse_config().

◆ free_variables()

void free_variables ( struct parser_ctx * ctx)

Releases the memory of all variables in ctx.

Definition at line 689 of file config_parser.c.

References ctx, FREE, Variable::key, SLIST_EMPTY, SLIST_FIRST, SLIST_REMOVE_HEAD, and Variable::value.

Referenced by load_configuration().

◆ get_long()

static long get_long ( struct stack * ctx,
const char * identifier )
static

Definition at line 142 of file config_parser.c.

References ctx.

◆ get_resource()

static char * get_resource ( char * name)
static

Definition at line 660 of file config_parser.c.

References conn, database, and ELOG.

Referenced by parse_file().

◆ get_string()

static const char * get_string ( struct stack * ctx,
const char * identifier )
static

Definition at line 130 of file config_parser.c.

References ctx.

◆ next_state()

static void next_state ( const cmdp_token * token,
struct parser_ctx * ctx )
static

Definition at line 171 of file config_parser.c.

References token::call_identifier, clear_stack(), ctx, token::extra, CommandResultIR::next_state, token::next_state, and subcommand_output.

Referenced by parse_config().

Here is the call graph for this function:

◆ parse_config()

static void parse_config ( struct parser_ctx * ctx,
const char * input,
struct context * context )
static

◆ parse_file()

parse_file_result_t parse_file ( struct parser_ctx * ctx,
const char * f,
IncludedFile * included_file )

Parses the given file by first replacing the variables, then calling parse_config and launching i3-nagbar if use_nagbar is true.

The return value is a boolean indicating whether there were errors during parsing.

Definition at line 705 of file config_parser.c.

References check_for_duplicate_bindings(), ctx, database, DLOG, ELOG, context::filename, FREE, get_resource(), context::has_errors, context::has_warnings, i3_version, Variable::key, context::line_copy, LOG, Variable::next_match, parse_config(), PARSE_FILE_CONFIG_ERRORS, PARSE_FILE_FAILED, PARSE_FILE_SUCCESS, IncludedFile::raw_contents, scalloc(), SLIST_FOREACH, sstrdup(), start_config_error_nagbar(), upsert_variable(), Variable::value, and IncludedFile::variable_replaced_contents.

Referenced by CFGFUN(), and load_configuration().

Here is the call graph for this function:

◆ push_long()

static void push_long ( struct stack * ctx,
const char * identifier,
long num )
static

Definition at line 109 of file config_parser.c.

References ctx.

Referenced by parse_config().

◆ push_string()

static void push_string ( struct stack * ctx,
const char * identifier,
const char * str )
static

Definition at line 80 of file config_parser.c.

References ctx, sasprintf(), and sstrdup().

Referenced by parse_config().

Here is the call graph for this function:

◆ single_line()

static char * single_line ( const char * start)
static

Definition at line 224 of file config_parser.c.

References sstrdup().

Referenced by parse_config().

Here is the call graph for this function:

◆ start_config_error_nagbar()

void start_config_error_nagbar ( const char * configpath,
bool has_errors )

Launch nagbar to indicate errors in the configuration file.

launch nagbar to indicate errors in the configuration file.

Definition at line 597 of file config_parser.c.

References config, config_error_nagbar_pid, errorfilename, Config::font, context::has_errors, Font::pattern, sasprintf(), and start_nagbar().

Referenced by parse_file(), and translate_keysyms().

Here is the call graph for this function:

◆ start_of_line()

static const char * start_of_line ( const char * walk,
const char * beginning )
static

Definition at line 210 of file config_parser.c.

Referenced by parse_config().

◆ upsert_variable()

static void upsert_variable ( struct variables_head * variables,
char * key,
char * value )
static

Definition at line 626 of file config_parser.c.

References DLOG, FREE, Variable::key, scalloc(), SLIST_FOREACH, SLIST_INSERT_AFTER, SLIST_INSERT_HEAD, sstrdup(), and Variable::value.

Referenced by parse_file().

Here is the call graph for this function:

Variable Documentation

◆ config_error_nagbar_pid

pid_t config_error_nagbar_pid = -1

Definition at line 45 of file config_parser.c.

Referenced by cmd_reload(), i3_exit(), i3_restart(), and start_config_error_nagbar().

◆ database

xcb_xrm_database_t* database = NULL

Definition at line 42 of file config_parser.c.

Referenced by get_resource(), and parse_file().