* 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:
@ -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);
|
||||
|
Reference in New Issue
Block a user