labwc/include/common/buf.h
Johan Malm 881d788bee action: do not expand env vars in Exec action
...<command> argument (but still resolve tilde).

This makes it easier to write sh -c '' constructs without turning labwc
into a shell parser in order to expand environment variables, whilst
respecting single quotes and escaped characters as well as ignoring
subshells syntax like $(foo) and backticks.

Also, fix bug where buffer length+alloc get out-of-sync
2023-09-23 14:52:59 +01:00

48 lines
855 B
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Very simple C string buffer implementation
*
* Copyright Johan Malm 2020
*/
#ifndef LABWC_BUF_H
#define LABWC_BUF_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct buf {
char *buf;
int alloc;
int len;
};
/**
* buf_expand_tilde - expand ~ in buffer
* @s: buffer
*/
void buf_expand_tilde(struct buf *s);
/**
* buf_expand_shell_variables - expand $foo and ${foo} in buffer
* @s: buffer
* Note: $$ is not handled
*/
void buf_expand_shell_variables(struct buf *s);
/**
* buf_init - allocate NULL-terminated C string buffer
* @s: buffer
* Note: use free(s->buf) to free it
*/
void buf_init(struct buf *s);
/**
* buf_add - add data to C string buffer
* @s: buffer
* @data: data to be added
*/
void buf_add(struct buf *s, const char *data);
#endif /* LABWC_BUF_H */