* external.cc (cygwin_internal): Add CW_CVT_MNT_OPTS to allow mount

flag parsing.  Add CW_LST_MNT_OPTS case to allow mount flag listing.
	* mount.cc (fstab_read_flags): Rename from read_flags.  Make externally
	available.  Change input string to char ** to allow returning faulty
	option.  Add flag for avoiding debug output.
	(fstab_list_flags): New function to create list of options.
	* include/sys/cygwin.h (cygwin_getinfo_types): Add CW_CVT_MNT_OPTS and
	CW_LST_MNT_OPTS.
This commit is contained in:
Corinna Vinschen
2010-04-29 08:47:44 +00:00
parent f00bc469e2
commit a11a07231b
4 changed files with 82 additions and 11 deletions

View File

@ -474,6 +474,40 @@ cygwin_internal (cygwin_getinfo_types t, ...)
internal_setlocale ();
res = 0;
}
break;
case CW_CVT_MNT_OPTS:
{
extern bool fstab_read_flags (char **, unsigned &, bool);
char **option_string = va_arg (arg, char **);
if (!option_string || !*option_string)
set_errno (EINVAL);
else
{
unsigned *pflags = va_arg (arg, unsigned *);
unsigned flags = 0;
if (fstab_read_flags (option_string, flags, true))
{
if (pflags)
*pflags = flags;
res = 0;
}
}
}
break;
case CW_LST_MNT_OPTS:
{
extern char *fstab_list_flags ();
char **option_string = va_arg (arg, char **);
if (!option_string)
set_errno (EINVAL);
else
{
*option_string = fstab_list_flags ();
if (*option_string)
res = 0;
}
}
break;
default:
set_errno (ENOSYS);