Идеята за poll-ване на няколко tty-та в рамките на един процес е интересна. И да си призная доста се зарибих от идеята да заработя 50 евро, строших известно време без успех :)
Имам само да споделя нещо, с което не съм съгласен и на което се натъкнах:
...ngetty-helper.c:
if (char_allow((unsigned char)*c))
error("bad character in login name",10);
...
static int char_allow(unsigned char ch) {
unsigned char c0, c1, *x = (unsigned char *)o[Oprint];
again:
c0 = x[0]; if (!c0) return -1;
c1 = x[1]; if (!c1) return -1;
if (c0 <= ch && ch <= c1) return 0;
if (x[2] == ':') { x += 3; goto again; }
return -1;
}
...
o[Oprint] = "az:AZ:09:,.:__";
Това е прекалено рестриктивно, например "%" е позволен символ в потребителското име в линукс поне де. В такъв случай единственият начин да се лог-не такъв потребител е да въведе веднъж грешен потребител/парола и когато /bin/login те запита отново за потребител/парола да си въведеш въпросният потребител.
Между другото, няма ли някакъв начин да се интегрира функционалността на /bin/login ? В смисъл, то като го имаш форкнат n на брой пъти (при n == *брой терминали с логнат потребител*), смисълът малко се губи.
Опитите да се сдобия с 100 лева ще продължат иначе :)