move expand_strdup() to config.c
it's not really a generic function.
This commit is contained in:
		
							parent
							
								
									7d02d6c1fe
								
							
						
					
					
						commit
						603e740b63
					
				
					 4 changed files with 36 additions and 36 deletions
				
			
		|  | @ -184,8 +184,6 @@ int ATTR_PRINTFLIKE(3, 4) nfsnprintf( char *buf, int blen, const char *fmt, ... | |||
| void ATTR_NORETURN oob( void ); | ||||
| void ATTR_NORETURN oom( void ); | ||||
| 
 | ||||
| char *expand_strdup( const char *s ); | ||||
| 
 | ||||
| int map_name( const char *arg, char **result, uint reserve, const char *in, const char *out ); | ||||
| 
 | ||||
| #define DEFINE_ARRAY_TYPE(T) \ | ||||
|  |  | |||
							
								
								
									
										34
									
								
								src/config.c
									
										
									
									
									
								
							
							
						
						
									
										34
									
								
								src/config.c
									
										
									
									
									
								
							|  | @ -20,6 +20,40 @@ char FieldDelimiter = ':'; | |||
| 
 | ||||
| static store_conf_t *stores; | ||||
| 
 | ||||
| char * | ||||
| expand_strdup( const char *s ) | ||||
| { | ||||
| 	struct passwd *pw; | ||||
| 	const char *p, *q; | ||||
| 	char *r; | ||||
| 
 | ||||
| 	if (*s == '~') { | ||||
| 		s++; | ||||
| 		if (!*s) { | ||||
| 			p = NULL; | ||||
| 			q = Home; | ||||
| 		} else if (*s == '/') { | ||||
| 			p = s; | ||||
| 			q = Home; | ||||
| 		} else { | ||||
| 			if ((p = strchr( s, '/' ))) { | ||||
| 				r = nfstrndup( s, (size_t)(p - s) ); | ||||
| 				pw = getpwnam( r ); | ||||
| 				free( r ); | ||||
| 			} else { | ||||
| 				pw = getpwnam( s ); | ||||
| 			} | ||||
| 			if (!pw) | ||||
| 				return NULL; | ||||
| 			q = pw->pw_dir; | ||||
| 		} | ||||
| 		nfasprintf( &r, "%s%s", q, p ? p : "" ); | ||||
| 		return r; | ||||
| 	} else { | ||||
| 		return nfstrdup( s ); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| char * | ||||
| get_arg( conffile_t *cfile, int required, int *comment ) | ||||
| { | ||||
|  |  | |||
|  | @ -26,6 +26,8 @@ extern char FieldDelimiter; | |||
| #define ARG_OPTIONAL 0 | ||||
| #define ARG_REQUIRED 1 | ||||
| 
 | ||||
| char *expand_strdup( const char *s ); | ||||
| 
 | ||||
| char *get_arg( conffile_t *cfile, int required, int *comment ); | ||||
| 
 | ||||
| char parse_bool( conffile_t *cfile ); | ||||
|  |  | |||
							
								
								
									
										34
									
								
								src/util.c
									
										
									
									
									
								
							
							
						
						
									
										34
									
								
								src/util.c
									
										
									
									
									
								
							|  | @ -480,40 +480,6 @@ cur_user( void ) | |||
| } | ||||
| */ | ||||
| 
 | ||||
| char * | ||||
| expand_strdup( const char *s ) | ||||
| { | ||||
| 	struct passwd *pw; | ||||
| 	const char *p, *q; | ||||
| 	char *r; | ||||
| 
 | ||||
| 	if (*s == '~') { | ||||
| 		s++; | ||||
| 		if (!*s) { | ||||
| 			p = NULL; | ||||
| 			q = Home; | ||||
| 		} else if (*s == '/') { | ||||
| 			p = s; | ||||
| 			q = Home; | ||||
| 		} else { | ||||
| 			if ((p = strchr( s, '/' ))) { | ||||
| 				r = nfstrndup( s, (size_t)(p - s) ); | ||||
| 				pw = getpwnam( r ); | ||||
| 				free( r ); | ||||
| 			} else { | ||||
| 				pw = getpwnam( s ); | ||||
| 			} | ||||
| 			if (!pw) | ||||
| 				return NULL; | ||||
| 			q = pw->pw_dir; | ||||
| 		} | ||||
| 		nfasprintf( &r, "%s%s", q, p ? p : "" ); | ||||
| 		return r; | ||||
| 	} else { | ||||
| 		return nfstrdup( s ); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| /* Return value: 0 = ok, -1 = out found in arg, -2 = in found in arg but no out specified */ | ||||
| int | ||||
| map_name( const char *arg, char **result, uint reserve, const char *in, const char *out ) | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue