mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	...<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
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			855 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			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 */
 |