* cygpath.cc: Add option to output windows paths in different formats: "dos"
and "mixed". (main): Process options. (doit): Check new options flags.
This commit is contained in:
parent
f43a747271
commit
2bd6505b39
@ -1,3 +1,11 @@
|
||||
2002-06-07 David Peterson <chief@mail.idrive.com>
|
||||
Christopher Faylor <cgf@redhat.com>
|
||||
|
||||
* cygpath.cc: Add option to output windows paths in different formats:
|
||||
"dos" and "mixed".
|
||||
(main): Process options.
|
||||
(doit): Check new options flags.
|
||||
|
||||
2002-06-06 Egor Duda <deo@logos-m.ru>
|
||||
|
||||
* regtool.cc (Fail): Be more verbose.
|
||||
@ -27,7 +35,7 @@
|
||||
2002-06-05 Joshua Daniel Franklin <joshuadfranklin@yahoo.com>
|
||||
|
||||
* strace.cc (version): New global variable.
|
||||
(usage): Accomodate stdout output.
|
||||
(usage): Accommodate stdout output.
|
||||
(print_version): New function.
|
||||
|
||||
2002-06-03 Joshua Daniel Franklin <joshuadfranklin@yahoo.com>
|
||||
|
@ -29,6 +29,8 @@ static char *close_arg;
|
||||
static int path_flag, unix_flag, windows_flag, absolute_flag;
|
||||
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'},
|
||||
@ -48,6 +50,7 @@ static struct option long_options[] = {
|
||||
{(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'},
|
||||
{0, no_argument, 0, 0}
|
||||
};
|
||||
@ -68,6 +71,9 @@ Other options:\n\
|
||||
-l|--long-name print Windows long form of filename (with -w only)\n\
|
||||
-p|--path filename argument is a path\n\
|
||||
-s|--short-name print Windows short form of filename (with -w only)\n\
|
||||
-t|--type print Windows form of filename with specified\n\
|
||||
dos drive letter with backslashes (C:\\WINNT)\n\
|
||||
mixed drive letter with regular slashes (C:/WINNT)\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\
|
||||
@ -372,6 +378,33 @@ dowin (char option)
|
||||
exit (0);
|
||||
}
|
||||
|
||||
static void
|
||||
convert_slashes (char* name)
|
||||
{
|
||||
while ((name = strchr (name, '\\')) != NULL)
|
||||
{
|
||||
if (*name == '\\')
|
||||
*name = '/';
|
||||
name++;
|
||||
}
|
||||
}
|
||||
|
||||
static char *
|
||||
get_mixed_name (const char* filename)
|
||||
{
|
||||
char* mixed_buf = strdup (filename);
|
||||
|
||||
if (mixed_buf == NULL)
|
||||
{
|
||||
fprintf (stderr, "%s: out of memory\n", prog_name);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
convert_slashes (mixed_buf);
|
||||
|
||||
return mixed_buf;
|
||||
}
|
||||
|
||||
static void
|
||||
doit (char *filename)
|
||||
{
|
||||
@ -433,6 +466,8 @@ doit (char *filename)
|
||||
buf = get_short_paths (buf);
|
||||
if (longname_flag)
|
||||
buf = get_long_paths (buf);
|
||||
if (mixed_flag)
|
||||
buf = get_mixed_name (buf);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -444,6 +479,8 @@ doit (char *filename)
|
||||
conv_func = (absolute_flag ? cygwin_conv_to_full_win32_path :
|
||||
cygwin_conv_to_win32_path);
|
||||
retval = conv_func (filename, buf);
|
||||
if (mixed_flag)
|
||||
buf = get_mixed_name (buf);
|
||||
if (retval < 0)
|
||||
{
|
||||
fprintf (stderr, "%s: error converting \"%s\"\n",
|
||||
@ -504,13 +541,13 @@ main (int argc, char **argv)
|
||||
windows_flag = 0;
|
||||
shortname_flag = 0;
|
||||
longname_flag = 0;
|
||||
mixed_flag = 0;
|
||||
ignore_flag = 0;
|
||||
options_from_file_flag = 0;
|
||||
allusers_flag = 0;
|
||||
output_flag = 0;
|
||||
while ((c =
|
||||
getopt_long (argc, argv, (char *) "hac:f:opslSuvwWiDPAH",
|
||||
long_options, (int *) NULL)) != EOF)
|
||||
while ((c = getopt_long (argc, argv, (char *) "hac:f:opslSuvwt:WiDPAH",
|
||||
long_options, (int *) NULL)) != EOF)
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
@ -558,6 +595,21 @@ 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;
|
||||
@ -673,9 +725,9 @@ main (int argc, char **argv)
|
||||
case 'P':
|
||||
case 'S':
|
||||
case 'W':
|
||||
output_flag = 1;
|
||||
output_flag = 1;
|
||||
o = c;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
if (*s)
|
||||
do
|
||||
|
@ -83,6 +83,9 @@ Usage: cygpath [-A|--allusers] (-D|--desktop)|(-P|--smprograms) [-s|--short-name
|
||||
-p|--path filename argument is a path
|
||||
-s|--short-name print Windows short form of filename
|
||||
-u|--unix print Unix form of filename
|
||||
-t|--type print Windows form of filename with specified
|
||||
dos drive letter with backslashes (c:\winnt)
|
||||
mixed drive letter with regular slashes (c:/winnt)
|
||||
-v|--version output version information and exit
|
||||
-w|--windows print Windows form of filename
|
||||
-A|--allusers use `All Users' instead of current user for -D, -P
|
||||
|
Loading…
Reference in New Issue
Block a user