Во всем пакете программ mount изменения были произведены в файле mount.c. Функция, посредством которой пароль повторно запрашивается и приклеивается к общему списку опций называется getpassword(...) и выглядит следующим образом:
static int
getpassword(char *type,char **opts) {
char *passwd;
if(type) {
if(!strcmp(type,"ext2_crypt")) {
if(!*opts) {
passwd = getpass("Enter password: ");
*opts = xstrdup("password");
*opts = xstrconcat3(*opts,"=",passwd);
}
else {
if(!strstr(*opts,"password")) {
passwd = getpass("Enter password: ");
*opts = xstrconcat3(*opts,",","password");
*opts = xstrconcat3(*opts,"=",passwd);
}
}
return 0;
}
else return 1;
}
return 2;
}
Эта функция вызывается из mount_one(), которая, в свою очередь, вызывается при попытке монтирования, в случае, когда тип монтируемой файловой системы известен.