diff options
Diffstat (limited to '')
| -rw-r--r-- | src/c_opts.c | 30 | ||||
| -rw-r--r-- | src/c_unixize.c | 12 | ||||
| -rw-r--r-- | src/u_utils.c | 61 | ||||
| -rw-r--r-- | src/u_utils.h | 1 | 
4 files changed, 64 insertions, 40 deletions
| diff --git a/src/c_opts.c b/src/c_opts.c index 2c73288..93bd5d8 100644 --- a/src/c_opts.c +++ b/src/c_opts.c @@ -45,6 +45,8 @@   * This is where we handle command line options.   */ +#include <sys/param.h> +  #include <stdio.h>  #include <stdlib.h>  #include <string.h> @@ -52,6 +54,7 @@  #include "c_opts.h"  #include "c_unixize.h" +#include "u_utils.h"  static void  c_dump_usage(void) @@ -64,15 +67,17 @@ c_dump_usage(void)  }  static void -c_ask_confirm(const char dir[]) +c_prompt_confirm(void)  {  	char c; +	char path[MAXPATHLEN]; -	if (strncmp(dir, ".", 2 * sizeof(char)) == 0) { +	if (getcwd(path, MAXPATHLEN) == NULL) { +		u_dump_errno();  		dprintf(STDERR_FILENO, "unixize current directory? (y/n [n]) ");  	}  	else { -		dprintf(STDERR_FILENO, "unixize %s? (y/n [n]) ", dir); +		dprintf(STDERR_FILENO, "unixize %s? (y/n [n]) ", path);  	}  	scanf("%c", &c);  	if (c != 'y' && c != 'Y') { @@ -95,9 +100,13 @@ c_get_opts  	opts->pretend = FALSE;  	opts->recursive = FALSE;  	opts->verbose = FALSE; -	while ((opt = getopt(argc, (char *const *)argv, C_OPTS)) != -1) { +	while ( +			argv[0][0] != 'r' && +			(opt = getopt(argc, (char *const *)argv, C_OPTS)) != -1 +		) {  		if (opt == 'a') {  			opts->hidden = TRUE; +			printf("hidden\n");  		}  		else if (opt == 'h') {  			c_dump_usage(); @@ -105,35 +114,40 @@ c_get_opts  		}  		else if (opt == 'i') {  			opts->confirm = TRUE; +			printf("confirm\n");  		}  		else if (opt == 'n') {  			opts->hyphen = TRUE; +			printf("hyphen\n");  		}  		else if (opt == 'p') {  			opts->pretend = TRUE; +			printf("pretend\n");  		}  		else if (opt == 'R') {  			opts->recursive = TRUE; +			printf("recursive\n");  		}  		else if (opt == 'v') {  			opts->verbose = TRUE; +			printf("verbose\n");  		}  		else if (opt == '?') {  			c_dump_usage();  			exit(1);  		}  	} -	if (optind < argc && argv[optind] != NULL) { +	if (argv[0][0] != 'r' && optind < argc && argv[optind] != NULL) {  		strncpy(opts->dir, argv[optind], PATH_MAX);  		if (opts->dir[strlen(opts->dir) - 1] == '/') {  			opts->dir[strlen(opts->dir) - 1] = 0x00;  		}  	} -	else if (argv[optind] == NULL) { -		strncpy(opts->dir, ".", 2 * sizeof(char)); +	else if (argv[0][0] == 'r' || argv[optind] == NULL) { +		strlcpy(opts->dir, ".", 2 * sizeof(char));  	}  	if (opts->confirm == TRUE) { -		c_ask_confirm(opts->dir); +		c_prompt_confirm();  	}  	if (opts->pretend == TRUE) {  		opts->verbose = TRUE; diff --git a/src/c_unixize.c b/src/c_unixize.c index 45ce8d5..c941102 100644 --- a/src/c_unixize.c +++ b/src/c_unixize.c @@ -101,15 +101,23 @@ main  				nargv = u_get_nargv(&opts);  				if (nargv != NULL) {  					nargc = 0; -					while (argv[nargc] != NULL) { +					while (argv[nargc + 1] != NULL) {  						nargc++;  					}  					main(nargc, (const char**)nargv); +					u_del_nargv(nargv);  				}  				chdir("../");  			}  		} -		/* printf("'%s' -> '%s'\n", og_files->filename, new_files->filename); */ +		if (opts.verbose == TRUE) { +			dprintf( +				STDOUT_FILENO, +				"'%s' -> '%s'\n", +				og_files->filename, +				new_files->filename +		   ); +		}  		/* rename(); */  		og_files = og_files->next;  		new_files = new_files->next; diff --git a/src/u_utils.c b/src/u_utils.c index 4af6579..4c1a9ed 100644 --- a/src/u_utils.c +++ b/src/u_utils.c @@ -79,6 +79,19 @@ u_dump_errno_path(const char path[])  	);  } +void +u_del_nargv(char** nargv) +{ +	char** ptr; + +	ptr = nargv; +	while (*ptr != NULL) { +		u_memdel((void*)&nargv[ptr - nargv]); +		ptr++; +	} +	u_memdel((void*)&nargv); +} +  static char  u_get_extra_args(char args[], struct opts_s* opts)  { @@ -112,19 +125,6 @@ u_get_extra_args(char args[], struct opts_s* opts)  	return (i);  } -static void -u_del_nargv(char** nargv) -{ -	char** ptr; - -	ptr = nargv; -	while (*ptr != NULL) { -		u_memdel((void*)&nargv[ptr - nargv]); -		ptr++; -	} -	u_memdel((void*)&nargv); -} -  char**  u_get_nargv(struct opts_s* opts)  { @@ -134,12 +134,12 @@ u_get_nargv(struct opts_s* opts)  	char* tok;  	i = u_get_extra_args(args, opts) + 2; -	nargv = (char**)malloc((i + 1) * sizeof(char*)); +	nargv = (char**)malloc((i + 2) * sizeof(char*));  	if (nargv == NULL) {  		u_dump_errno();  		return (NULL);  	} -	nargv[0] = strdup("unixize"); +	nargv[0] = strdup("r");  	nargv[1] = NULL;  	if (nargv[0] == NULL) {  		u_memdel((void*)&nargv); @@ -152,24 +152,25 @@ u_get_nargv(struct opts_s* opts)  		u_memdel((void*)&nargv);  		return (NULL);  	} -	if (i > 2) { -		tok = strtok(args, ":"); -		nargv[3] = strdup(tok); -		if (nargv[3] == NULL) { +	if (i <= 3) { +		return (nargv); +	} +	tok = strtok(args, ":"); +	nargv[2] = strdup(tok); +	if (nargv[2] == NULL) { +		u_del_nargv(nargv); +		return (NULL); +	} +	nargv[3] = NULL; +	i = 3; +	while ((tok = strtok(NULL, ":")) != NULL) { +		nargv[i] = strdup(tok); +		if (nargv[i] == NULL) {  			u_del_nargv(nargv);  			return (NULL);  		} -		nargv[4] = NULL; -		i = 4; -		while ((tok = strtok(NULL, ":")) != NULL) { -			nargv[i] = strdup(tok); -			if (nargv[i] != NULL) { -				u_del_nargv(nargv); -				return (NULL); -			} -			nargv[i + 1] = NULL; -			i++; -		} +		nargv[i + 1] = NULL; +		i++;  	}  	return (nargv);  } diff --git a/src/u_utils.h b/src/u_utils.h index 4c298d6..5ea7534 100644 --- a/src/u_utils.h +++ b/src/u_utils.h @@ -48,4 +48,5 @@  void	u_memdel(void**);  void	u_dump_errno(void);  void	u_dump_errno_path(const char[]); +void	u_del_nargv(char** nargv);  char**	u_get_nargv(struct opts_s*); | 
