mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	Add string-helpers.c
This commit is contained in:
		
							parent
							
								
									51507df2e7
								
							
						
					
					
						commit
						7e55e2cd09
					
				
					 6 changed files with 47 additions and 54 deletions
				
			
		
							
								
								
									
										11
									
								
								include/common/string-helpers.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								include/common/string-helpers.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					#ifndef __LABWC_STRING_HELPERs_H
 | 
				
			||||||
 | 
					#define __LABWC_STRING_HELPERS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * string_strip - strip white space left and right
 | 
				
			||||||
 | 
					 * Note: this function does a left skip, so the returning pointer cannot be
 | 
				
			||||||
 | 
					 * used to free any allocated memory
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					char *string_strip(char *s);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* __LABWC_STRING_HELPERs_H */
 | 
				
			||||||
| 
						 | 
					@ -5,12 +5,12 @@
 | 
				
			||||||
 * session_environment_init - set enrivonment variables
 | 
					 * session_environment_init - set enrivonment variables
 | 
				
			||||||
 * Note: Same as `. ~/.config/labwc/environment` (or equivalent XDG config dir)
 | 
					 * Note: Same as `. ~/.config/labwc/environment` (or equivalent XDG config dir)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
session_environment_init(void);
 | 
					void session_environment_init(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * session_autostart_init - run autostart file as shell script
 | 
					 * session_autostart_init - run autostart file as shell script
 | 
				
			||||||
 * Note: Same as `sh ~/.config/labwc/autostart` (or equivalent XDG config dir)
 | 
					 * Note: Same as `sh ~/.config/labwc/autostart` (or equivalent XDG config dir)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
session_autostart_init(void);
 | 
					void session_autostart_init(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* __LABWC_SESSION_H */
 | 
					#endif /* __LABWC_SESSION_H */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,4 +5,5 @@ labwc_sources += files(
 | 
				
			||||||
  'grab-file.c',
 | 
					  'grab-file.c',
 | 
				
			||||||
  'log.c',
 | 
					  'log.c',
 | 
				
			||||||
  'spawn.c',
 | 
					  'spawn.c',
 | 
				
			||||||
 | 
					  'string-helpers.c',
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										27
									
								
								src/common/string-helpers.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/common/string-helpers.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					#include <ctype.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					rtrim(char **s)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						size_t len = strlen(*s);
 | 
				
			||||||
 | 
						if (!len) {
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						char *end = *s + len - 1;
 | 
				
			||||||
 | 
						while (end >= *s && isspace(*end)) {
 | 
				
			||||||
 | 
							end--;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						*(end + 1) = '\0';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char *
 | 
				
			||||||
 | 
					string_strip(char *s)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						rtrim(&s);
 | 
				
			||||||
 | 
						while (isspace(*s)) {
 | 
				
			||||||
 | 
							s++;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return s;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,7 @@
 | 
				
			||||||
#include "common/dir.h"
 | 
					#include "common/dir.h"
 | 
				
			||||||
#include "common/log.h"
 | 
					#include "common/log.h"
 | 
				
			||||||
#include "common/spawn.h"
 | 
					#include "common/spawn.h"
 | 
				
			||||||
 | 
					#include "common/string-helpers.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool
 | 
					static bool
 | 
				
			||||||
isfile(const char *path)
 | 
					isfile(const char *path)
 | 
				
			||||||
| 
						 | 
					@ -22,30 +23,6 @@ string_empty(const char *s)
 | 
				
			||||||
	return !s || !*s;
 | 
						return !s || !*s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
rtrim(char **s)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	size_t len = strlen(*s);
 | 
					 | 
				
			||||||
	if (!len) {
 | 
					 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	char *end = *s + len - 1;
 | 
					 | 
				
			||||||
	while (end >= *s && isspace(*end)) {
 | 
					 | 
				
			||||||
		end--;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	*(end + 1) = '\0';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static char *
 | 
					 | 
				
			||||||
strstrip(char *s)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	rtrim(&s);
 | 
					 | 
				
			||||||
	while (isspace(*s)) {
 | 
					 | 
				
			||||||
		s++;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return s;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
process_line(char *line)
 | 
					process_line(char *line)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -58,8 +35,8 @@ process_line(char *line)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	*p = '\0';
 | 
						*p = '\0';
 | 
				
			||||||
	key = strstrip(line);
 | 
						key = string_strip(line);
 | 
				
			||||||
	value = strstrip(++p);
 | 
						value = string_strip(++p);
 | 
				
			||||||
	if (string_empty(key) || string_empty(value)) {
 | 
						if (string_empty(key) || string_empty(value)) {
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "common/dir.h"
 | 
					#include "common/dir.h"
 | 
				
			||||||
#include "common/log.h"
 | 
					#include "common/log.h"
 | 
				
			||||||
 | 
					#include "common/string-helpers.h"
 | 
				
			||||||
#include "theme/theme.h"
 | 
					#include "theme/theme.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
| 
						 | 
					@ -67,30 +68,6 @@ static void entry(const char *key, const char *value)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/* clang-format on */
 | 
					/* clang-format on */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
rtrim(char **s)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	size_t len = strlen(*s);
 | 
					 | 
				
			||||||
	if (!len) {
 | 
					 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	char *end = *s + len - 1;
 | 
					 | 
				
			||||||
	while (end >= *s && isspace(*end)) {
 | 
					 | 
				
			||||||
		end--;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	*(end + 1) = '\0';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static char *
 | 
					 | 
				
			||||||
strstrip(char *s)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	rtrim(&s);
 | 
					 | 
				
			||||||
	while (isspace(*s)) {
 | 
					 | 
				
			||||||
		s++;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return s;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
parse_config_line(char *line, char **key, char **value)
 | 
					parse_config_line(char *line, char **key, char **value)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -99,8 +76,8 @@ parse_config_line(char *line, char **key, char **value)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	*p = '\0';
 | 
						*p = '\0';
 | 
				
			||||||
	*key = strstrip(line);
 | 
						*key = string_strip(line);
 | 
				
			||||||
	*value = strstrip(++p);
 | 
						*value = string_strip(++p);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue