* cygpath.cc (long_options): Add "mode" option.

(options): Ditto.
(usage): Report on new option.
(report_mode): New function.
(main): Implement -M option.
This commit is contained in:
Christopher Faylor 2004-02-25 01:23:20 +00:00
parent 5ef9bbc874
commit f135dd3ee7
3 changed files with 41 additions and 6 deletions

View File

@ -1,3 +1,11 @@
2004-02-24 Christopher Faylor <cgf@redhat.com>
* cygpath.cc (long_options): Add "mode" option.
(options): Ditto.
(usage): Report on new option.
(report_mode): New function.
(main): Implement -M option.
2004-02-20 Christopher Faylor <cgf@redhat.com> 2004-02-20 Christopher Faylor <cgf@redhat.com>
* Makefile.in (build_dumper): Detect missing iconv library. * Makefile.in (build_dumper): Detect missing iconv library.

View File

@ -41,6 +41,7 @@ static struct option long_options[] = {
{(char *) "ignore", no_argument, NULL, 'i'}, {(char *) "ignore", no_argument, NULL, 'i'},
{(char *) "long-name", no_argument, NULL, 'l'}, {(char *) "long-name", no_argument, NULL, 'l'},
{(char *) "mixed", no_argument, NULL, 'm'}, {(char *) "mixed", no_argument, NULL, 'm'},
{(char *) "mode", no_argument, NULL, 'M'},
{(char *) "option", no_argument, NULL, 'o'}, {(char *) "option", no_argument, NULL, 'o'},
{(char *) "path", no_argument, NULL, 'p'}, {(char *) "path", no_argument, NULL, 'p'},
{(char *) "short-name", no_argument, NULL, 's'}, {(char *) "short-name", no_argument, NULL, 's'},
@ -57,7 +58,7 @@ static struct option long_options[] = {
{0, no_argument, 0, 0} {0, no_argument, 0, 0}
}; };
static char options[] = "ac:df:hilmopst:uvwADHPSW"; static char options[] = "ac:df:hilmMopst:uvwADHPSW";
static void static void
usage (FILE * stream, int status) usage (FILE * stream, int status)
@ -71,6 +72,7 @@ Convert Unix and Windows format paths, or output system path information\n\
Output type options:\n\ Output type options:\n\
-d, --dos print DOS (short) form of NAME (C:\\PROGRA~1\\)\n\ -d, --dos print DOS (short) form of NAME (C:\\PROGRA~1\\)\n\
-m, --mixed like --windows, but with regular slashes (C:/WINNT)\n\ -m, --mixed like --windows, but with regular slashes (C:/WINNT)\n\
-M, --mode report on mode of file (binmode or textmode)\n\
-u, --unix (default) print Unix form of NAME (/cygdrive/c/winnt)\n\ -u, --unix (default) print Unix form of NAME (/cygdrive/c/winnt)\n\
-w, --windows print Windows form of NAME (C:\\WINNT)\n\ -w, --windows print Windows form of NAME (C:\\WINNT)\n\
-t, --type TYPE print TYPE form: 'dos', 'mixed', 'unix', or 'windows'\n\ -t, --type TYPE print TYPE form: 'dos', 'mixed', 'unix', or 'windows'\n\
@ -409,6 +411,24 @@ dowin (char option)
exit (0); exit (0);
} }
static void
report_mode (char *filename)
{
switch (cygwin_internal (CW_GET_BINMODE, filename))
{
case O_BINARY:
printf ("%s: binary\n", filename);
break;
case O_TEXT:
printf ("%s: text\n", filename);
break;
default:
fprintf (stderr, "%s: file '%s' - %s\n", prog_name, filename,
strerror (errno));
break;
}
}
static void static void
doit (char *filename) doit (char *filename)
{ {
@ -522,7 +542,7 @@ main (int argc, char **argv)
{ {
int c, o = 0; int c, o = 0;
int options_from_file_flag; int options_from_file_flag;
char *filename; int mode_flag;
prog_name = strrchr (argv[0], '/'); prog_name = strrchr (argv[0], '/');
if (prog_name == NULL) if (prog_name == NULL)
@ -542,6 +562,7 @@ main (int argc, char **argv)
options_from_file_flag = 0; options_from_file_flag = 0;
allusers_flag = 0; allusers_flag = 0;
output_flag = 0; output_flag = 0;
mode_flag = 0;
while ((c = getopt_long (argc, argv, options, while ((c = getopt_long (argc, argv, options,
long_options, (int *) NULL)) != EOF) long_options, (int *) NULL)) != EOF)
{ {
@ -567,6 +588,10 @@ main (int argc, char **argv)
file_arg = optarg; file_arg = optarg;
break; break;
case 'M':
mode_flag = 1;
break;
case 'o': case 'o':
options_from_file_flag = 1; options_from_file_flag = 1;
break; break;
@ -690,10 +715,11 @@ main (int argc, char **argv)
if (optind > argc - 1) if (optind > argc - 1)
usage (stderr, 1); usage (stderr, 1);
for (int i=optind; argv[i]; i++) { for (int i = optind; argv[i]; i++)
filename = argv[i]; if (mode_flag)
doit (filename); report_mode (argv[i]);
} else
doit (argv[i]);
} }
else else
{ {

View File

@ -119,6 +119,7 @@ Convert Unix and Windows format paths, or output system path information
Output type options: Output type options:
-d, --dos print DOS (short) form of NAME (C:\PROGRA~1\) -d, --dos print DOS (short) form of NAME (C:\PROGRA~1\)
-m, --mixed like --windows, but with regular slashes (C:/WINNT) -m, --mixed like --windows, but with regular slashes (C:/WINNT)
-M, --mode report on mode of file (currently binmode or textmode)
-u, --unix (default) print Unix form of NAME (/cygdrive/c/winnt) -u, --unix (default) print Unix form of NAME (/cygdrive/c/winnt)
-w, --windows print Windows form of NAME (C:\WINNT) -w, --windows print Windows form of NAME (C:\WINNT)
-t, --type TYPE print TYPE form: 'dos', 'mixed', 'unix', or 'windows' -t, --type TYPE print TYPE form: 'dos', 'mixed', 'unix', or 'windows'