--- cygpath.cc-orig Thu Jun 20 17:28:00 2002 +++ cygpath.cc Thu Jun 20 18:06:23 2002 @@ -30,28 +30,27 @@ static int path_flag, unix_flag, windows static int shortname_flag, longname_flag; static int ignore_flag, allusers_flag, output_flag; static int mixed_flag; -static const char *windows_format_arg; static struct option long_options[] = { - {(char *) "help", no_argument, NULL, 'h'}, {(char *) "absolute", no_argument, NULL, 'a'}, + {(char *) "close", required_argument, (int *) &close_arg, 'c'}, + {(char *) "file", required_argument, (int *) &file_arg, 'f'}, + {(char *) "help", no_argument, NULL, 'h'}, + {(char *) "ignore", no_argument, NULL, 'i'}, + {(char *) "long-name", no_argument, NULL, 'l'}, + {(char *) "mixed", no_argument, NULL, 'm'}, {(char *) "option", no_argument, NULL, 'o'}, {(char *) "path", no_argument, NULL, 'p'}, - {(char *) "close", required_argument, (int *) &close_arg, 'c'}, + {(char *) "short-name", no_argument, NULL, 's'}, {(char *) "unix", no_argument, NULL, 'u'}, - {(char *) "file", required_argument, (int *) &file_arg, 'f'}, {(char *) "version", no_argument, NULL, 'v'}, {(char *) "windows", no_argument, NULL, 'w'}, - {(char *) "short-name", no_argument, NULL, 's'}, - {(char *) "long-name", no_argument, NULL, 'l'}, - {(char *) "windir", no_argument, NULL, 'W'}, - {(char *) "sysdir", no_argument, NULL, 'S'}, - {(char *) "ignore", no_argument, NULL, 'i'}, {(char *) "allusers", no_argument, NULL, 'A'}, {(char *) "desktop", no_argument, NULL, 'D'}, - {(char *) "smprograms", no_argument, NULL, 'P'}, - {(char *) "type", required_argument, (int *) &windows_format_arg, 't'}, {(char *) "homeroot", no_argument, NULL, 'H'}, + {(char *) "smprograms", no_argument, NULL, 'P'}, + {(char *) "sysdir", no_argument, NULL, 'S'}, + {(char *) "windir", no_argument, NULL, 'W'}, {0, no_argument, 0, 0} }; @@ -60,32 +59,31 @@ usage (FILE * stream, int status) { if (!ignore_flag || !status) fprintf (stream, "\ -Usage: %s (-u|-w|-t TYPE) [-c HANDLE] [-f FILE] [options] NAME\n\n\ - %s [-ADHPSW] \n\n\ -Output type options (required):\n\ - -u|--unix print Unix form of NAME (default)\n\ - -w|--windows print Windows form of NAME \n\n\ - -t|--type print Windows form of NAME with TYPE one of\n\ - dos drive letter with backslashes (C:\\WINNT)\n\ - mixed drive letter with regular slashes (C:/WINNT)\n\ +Usage: %s (-u|-w|-t TYPE) [-c HANDLE] [-f FILE] [options] NAME\n\ + %s [-ADHPSW] \n\ +Output type options:\n\ + -u, --unix (default) print Unix form of NAME (/cygdrive/c/winnt)\n\ + -w, --windows print Windows form of NAME (C:\\WINNT)\n\ + -m, --mixed like --windows, but with regular slashes (C:/WINNT)\n\ Path conversion options:\n\ - -a|--absolute output absolute path\n\ - -c|--close HANDLE close HANDLE (for use in captured process)\n\ - -f|--file FILE read FILE for input; use - to read from STDIN\n\ - -i|--ignore ignore missing argument\n\ - -l|--long-name print Windows long form of NAME (with -w only)\n\ - -p|--path NAME is a PATH list (i.e., '/bin:/usr/bin')\n\ - -s|--short-name print Windows short form of NAME (with -w only)\n\ + -a, --absolute output absolute path\n\ + -l, --long-name print Windows long form of NAME (with -w only)\n\ + -p, --path NAME is a PATH list (i.e., '/bin:/usr/bin')\n\ + -s, --short-name print Windows short form of NAME (with -w only)\n\ System information output:\n\ - -A|--allusers use `All Users' instead of current user for -D, -P\n\ - -D|--desktop output `Desktop' directory and exit\n\ - -H|--homeroot output `Profiles' directory (home root) and exit\n\ - -P|--smprograms output Start Menu `Programs' directory and exit\n\ - -S|--sysdir output system directory and exit\n\ - -W|--windir output `Windows' directory and exit\n\n\ + -A, --allusers use `All Users' instead of current user for -D, -P\n\ + -D, --desktop output `Desktop' directory and exit\n\ + -H, --homeroot output `Profiles' directory (home root) and exit\n\ + -P, --smprograms output Start Menu `Programs' directory and exit\n\ + -S, --sysdir output system directory and exit\n\ + -W, --windir output `Windows' directory and exit\n\ Other options:\n\ - -h|--help output usage information and exit\n\ - -v|--version output version information and exit\n\ + -f, --file FILE read FILE for input; use - to read from STDIN\n\ + -o, --option read options from FILE as well (for use with --file)\n\ + -c, --close HANDLE close HANDLE (for use in captured process)\n\ + -i, --ignore ignore missing argument\n\ + -h, --help output usage information and exit\n\ + -v, --version output version information and exit\ ", prog_name, prog_name); exit (ignore_flag ? 0 : status); } @@ -543,7 +541,7 @@ main (int argc, char **argv) prog_name++; path_flag = 0; - unix_flag = 0; + unix_flag = 1; windows_flag = 0; shortname_flag = 0; longname_flag = 0; @@ -552,7 +550,7 @@ main (int argc, char **argv) options_from_file_flag = 0; allusers_flag = 0; output_flag = 0; - while ((c = getopt_long (argc, argv, (char *) "hac:f:opslSuvwt:WiDPAH", + while ((c = getopt_long (argc, argv, (char *) "ac:f:hilmopsuvwADHPSW", long_options, (int *) NULL)) != EOF) { switch (c) @@ -578,15 +576,24 @@ main (int argc, char **argv) break; case 'u': - if (unix_flag || windows_flag) + if (windows_flag || mixed_flag) usage (stderr, 1); unix_flag = 1; break; case 'w': - if (unix_flag || windows_flag) + if (windows_flag || mixed_flag) + usage (stderr, 1); + unix_flag = 0; + windows_flag = 1; + break; + + case 'm': + if (windows_flag) usage (stderr, 1); + unix_flag = 0; windows_flag = 1; + mixed_flag = 1; break; case 'l': @@ -601,21 +608,6 @@ main (int argc, char **argv) shortname_flag = 1; break; - case 't': - if (unix_flag || (optarg == NULL)) - usage (stderr, 1); - - windows_flag = 1; - windows_format_arg = (*optarg == '=') ? (optarg + 1) : (optarg); - - if (strcasecmp (windows_format_arg, "mixed") == 0) - mixed_flag = 1; - else if (strcasecmp (windows_format_arg, "dos") == 0) - /* nothing */; - else - usage (stderr, 1); - break; - case 'A': allusers_flag = 1; break; @@ -652,7 +644,7 @@ main (int argc, char **argv) if (options_from_file_flag && !file_arg) usage (stderr, 1); - if (!output_flag && !unix_flag && !windows_flag && !options_from_file_flag) + if (!unix_flag && !windows_flag && !mixed_flag && !options_from_file_flag) usage (stderr, 1); if (!file_arg) @@ -714,6 +706,10 @@ main (int argc, char **argv) shortname_flag = 0; longname_flag = 1; break; + case 'm': + unix_flag = 0; + windows_flag = 1; + mixed_flag = 1; case 'w': unix_flag = 0; windows_flag = 1;