xfree86: add xf86OptionListDuplicate()

Does what it says on the box.

Some drivers need to duplicate option lists from the original device to
ensure that devices created by the driver (driver-internal hotplugging) have
the same list of options as the original device.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Fernando Carrijo <fcarrijo@freedesktop.org>
Reviewed-by: Tiago Vignatti <tiago.vignatti@nokia.com>
This commit is contained in:
Peter Hutterer 2010-09-10 09:54:33 +10:00
parent 9dca441670
commit 693e92d404
2 changed files with 20 additions and 0 deletions

View File

@ -84,6 +84,7 @@ extern _X_EXPORT pointer xf86NewOption(char *name, char *value );
extern _X_EXPORT pointer xf86NextOption(pointer list );
extern _X_EXPORT pointer xf86OptionListCreate(const char **options, int count, int used);
extern _X_EXPORT pointer xf86OptionListMerge(pointer head, pointer tail);
extern _X_EXPORT pointer xf86OptionListDuplicate(pointer list);
extern _X_EXPORT void xf86OptionListFree(pointer opt);
extern _X_EXPORT char *xf86OptionName(pointer opt);
extern _X_EXPORT char *xf86OptionValue(pointer opt);

View File

@ -136,6 +136,25 @@ xf86CollectInputOptions(InputInfoPtr pInfo, const char **defaultOpts)
}
}
/**
* Duplicate the option list passed in. The returned pointer will be a newly
* allocated option list and must be freed by the caller.
*/
pointer
xf86OptionListDuplicate(pointer options)
{
pointer o = NULL;
while (options)
{
o = xf86AddNewOption(o, xf86OptionName(options), xf86OptionValue(options));
options = xf86nextOption(options);
}
return o;
}
/* Created for new XInput stuff -- essentially extensions to the parser */
static int