From df1841c3106c0b5e475fcb22714f0f14d4120d67 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 29 May 2007 07:54:45 +0000 Subject: [PATCH] * cygpath.cc (do_options): Allow outputflag combined with other basic flags. Only check options_from_file_flag if reading options from command line. (main): Check for NULL argz vector. Don't free argz vector prematurely. Don't force flag combination in !options_from_file_flag case. --- winsup/utils/ChangeLog | 8 ++++++++ winsup/utils/cygpath.cc | 16 +++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 6306a88cf..f92c0d7c7 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,11 @@ +2007-05-29 Corinna Vinschen + + * cygpath.cc (do_options): Allow outputflag combined with other + basic flags. Only check options_from_file_flag if reading options + from command line. + (main): Check for NULL argz vector. Don't free argz vector prematurely. + Don't force flag combination in !options_from_file_flag case. + 2007-05-23 Corinna Vinschen * cygpath.cc: Include argz.h. diff --git a/winsup/utils/cygpath.cc b/winsup/utils/cygpath.cc index e49efff22..1f4588da9 100644 --- a/winsup/utils/cygpath.cc +++ b/winsup/utils/cygpath.cc @@ -894,12 +894,12 @@ do_options (int argc, char **argv, int from_file) } /* If none of the "important" flags are set, -u is default. */ - if (!unix_flag && !windows_flag && !options_from_file_flag && !output_flag - && !mode_flag) + if (!unix_flag && !windows_flag && !mode_flag + && (!from_file ? !options_from_file_flag : 1)) unix_flag = 1; /* Only one of ... */ - if (unix_flag + windows_flag + output_flag + mode_flag > 1 + if (unix_flag + windows_flag + mode_flag > 1 + (!from_file ? options_from_file_flag : 0)) usage (stderr, 1); @@ -994,6 +994,8 @@ main (int argc, char **argv) perror ("cygpath"); exit (1); } + if (!az) + continue; ac = argz_count (az, azl) + 1; av = (char **) malloc ((ac + 1) * sizeof (char *)); if (!av) @@ -1003,16 +1005,12 @@ main (int argc, char **argv) } av[0] = prog_name; argz_extract (az, azl, av + 1); - free (az); if (options_from_file_flag) o = do_options (ac, av, 1); else - { - optind = 1; - unix_flag = 1; - output_flag = mode_flag = windows_flag = 0; - } + optind = 1; action (ac, av, o); + free (az); free (av); } } -- 2.43.5