rcinput: add less ugly hack for crappy hd2 driver

Origin commit data
------------------
Branch: ni/coolstream
Commit: d02b29650e
Author: Stefan Seyfried <seife@tuxbox-git.slipkontur.de>
Date: 2017-02-22 (Wed, 22 Feb 2017)


------------------
No further description and justification available within origin commit message!

------------------
This commit was generated by Migit
This commit is contained in:
Stefan Seyfried
2017-02-22 11:43:37 +01:00
committed by Michael Liebmann
parent 6aba169cba
commit 3ffe30438f

View File

@@ -205,12 +205,23 @@ void CRCInput::open(bool recheck)
while ((dentry = readdir(dir)) != NULL) while ((dentry = readdir(dir)) != NULL)
{ {
if (dentry->d_type != DT_CHR) { id.path = "/dev/input/" + std::string(dentry->d_name);
/* hack: on hd2, the device is called "/dev/cs_ir",
there are links in /dev/input: pointing to it nevis_ir and event0 (WTF???)
so if nevis_ir points to cs_ir, accept it, even though it is a symlink...
the rest of the code then uses coolstream specific parts if path == "nevis_ir"
a better solution would be to simply mknod /dev/input/nevis_ir c 240 0, creating
a second instance of /dev/cs_ir named /dv/input/nevis_ir (or to fix the driver
to actually create a real input device */
if (dentry->d_type == DT_LNK &&
id.path == "/dev/input/nevis_ir") {
if (readLink(id.path) != "/dev/cs_ir")
continue;
} else if (dentry->d_type != DT_CHR) {
d_printf("[rcinput:%s] skipping '%s'\n", __func__, dentry->d_name); d_printf("[rcinput:%s] skipping '%s'\n", __func__, dentry->d_name);
continue; continue;
} }
d_printf("[rcinput:%s] considering '%s'\n", __func__, dentry->d_name); d_printf("[rcinput:%s] considering '%s'\n", __func__, dentry->d_name);
id.path = "/dev/input/" + std::string(dentry->d_name);
if (checkpath(id)) if (checkpath(id))
continue; continue;
id.fd = ::open(id.path.c_str(), O_RDWR|O_NONBLOCK|O_CLOEXEC); id.fd = ::open(id.path.c_str(), O_RDWR|O_NONBLOCK|O_CLOEXEC);