summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/opie-login/passworddialogimpl.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/core/opie-login/passworddialogimpl.cpp b/core/opie-login/passworddialogimpl.cpp
index 852708e..d9132e2 100644
--- a/core/opie-login/passworddialogimpl.cpp
+++ b/core/opie-login/passworddialogimpl.cpp
@@ -1,91 +1,96 @@
1/* 1/*
2               =. This file is part of the OPIE Project 2               =. This file is part of the OPIE Project
3             .=l. Copyright (c) 2004 Holger Hans Peter Freyther <zecke@handhelds.org> 3             .=l. Copyright (c) 2004 Holger Hans Peter Freyther <zecke@handhelds.org>
4           .>+-= 4           .>+-=
5 _;:,     .>    :=|. This file is free software; you can 5 _;:,     .>    :=|. This file is free software; you can
6.> <`_,   >  .   <= redistribute it and/or modify it under 6.> <`_,   >  .   <= redistribute it and/or modify it under
7:`=1 )Y*s>-.--   : the terms of the GNU General Public 7:`=1 )Y*s>-.--   : the terms of the GNU General Public
8.="- .-=="i,     .._ License as published by the Free Software 8.="- .-=="i,     .._ License as published by the Free Software
9 - .   .-<_>     .<> Foundation; either version 2 of the License, 9 - .   .-<_>     .<> Foundation; either version 2 of the License,
10     ._= =}       : or (at your option) any later version. 10     ._= =}       : or (at your option) any later version.
11    .%`+i>       _;_. 11    .%`+i>       _;_.
12    .i_,=:_.      -<s. This file is distributed in the hope that 12    .i_,=:_.      -<s. This file is distributed in the hope that
13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 13     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
14    : ..    .:,     . . . without even the implied warranty of 14    : ..    .:,     . . . without even the implied warranty of
15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 15    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General 16  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
17..}^=.=       =       ; Public License for more details. 17..}^=.=       =       ; Public License for more details.
18++=   -.     .`     .: 18++=   -.     .`     .:
19 :     =  ...= . :.=- You should have received a copy of the GNU 19 :     =  ...= . :.=- You should have received a copy of the GNU
20 -.   .:....=;==+<; General Public License along with this file; 20 -.   .:....=;==+<; General Public License along with this file;
21  -_. . .   )=.  = see the file COPYING. If not, write to the 21  -_. . .   )=.  = see the file COPYING. If not, write to the
22    --        :-=` Free Software Foundation, Inc., 22    --        :-=` Free Software Foundation, Inc.,
23 59 Temple Place - Suite 330, 23 59 Temple Place - Suite 330,
24 Boston, MA 02111-1307, USA. 24 Boston, MA 02111-1307, USA.
25 25
26*/ 26*/
27 27
28
29#include <qlayout.h> 28#include <qlayout.h>
30#include <qlabel.h> 29#include <qlabel.h>
31#include <qlineedit.h> 30#include <qlineedit.h>
32#include <qvalidator.h> 31#include <qvalidator.h>
33#include <qmessagebox.h> 32#include <qmessagebox.h>
34#include <qhbox.h> 33#include <qhbox.h>
35#include <qtoolbutton.h> 34#include <qtoolbutton.h>
36 35
36
37
37#include <sys/types.h> 38#include <sys/types.h>
38#include <pwd.h> 39#include <pwd.h>
39#include <shadow.h> 40#include <shadow.h>
40#include <stdio.h> 41#include <stdio.h>
41#include <time.h> 42#include <time.h>
42#include <unistd.h> 43#include <unistd.h>
43 44
45// Shitty gcc2 toolchain
46extern "C" char* crypt( const char*, const char* );
47
48
44 49
45#include "passworddialogimpl.h" 50#include "passworddialogimpl.h"
46 51
47 52
48// This function is taken from 'busybox'. 53// This function is taken from 'busybox'.
49static int i64c(int i) { 54static int i64c(int i) {
50 if (i <= 0) 55 if (i <= 0)
51 return ('.'); 56 return ('.');
52 if (i == 1) 57 if (i == 1)
53 return ('/'); 58 return ('/');
54 if (i >= 2 && i < 12) 59 if (i >= 2 && i < 12)
55 return ('0' - 2 + i); 60 return ('0' - 2 + i);
56 if (i >= 12 && i < 38) 61 if (i >= 12 && i < 38)
57 return ('A' - 12 + i); 62 return ('A' - 12 + i);
58 if (i >= 38 && i < 63) 63 if (i >= 38 && i < 63)
59 return ('a' - 38 + i); 64 return ('a' - 38 + i);
60 return ('z'); 65 return ('z');
61} 66}
62 67
63// This function is taken from 'busybox'. 68// This function is taken from 'busybox'.
64static char *crypt_make_salt() { 69static char *crypt_make_salt() {
65 time_t now; 70 time_t now;
66 static unsigned long x; 71 static unsigned long x;
67 static char result[3]; 72 static char result[3];
68 73
69 ::time(&now); 74 ::time(&now);
70 x += now + getpid() + clock(); 75 x += now + getpid() + clock();
71 result[0] = i64c(((x >> 18) ^ (x >> 6)) & 077); 76 result[0] = i64c(((x >> 18) ^ (x >> 6)) & 077);
72 result[1] = i64c(((x >> 12) ^ x) & 077); 77 result[1] = i64c(((x >> 12) ^ x) & 077);
73 result[2] = '\0'; 78 result[2] = '\0';
74 return result; 79 return result;
75} 80}
76 81
77/* 82/*
78 * Modal dialog to force root password. It is quite hard as it only leave 83 * Modal dialog to force root password. It is quite hard as it only leave
79 * when a password is set. 84 * when a password is set.
80 * Also it prevalidates the password... 85 * Also it prevalidates the password...
81 */ 86 */
82PasswordDialogImpl::PasswordDialogImpl( QWidget* parent ) 87PasswordDialogImpl::PasswordDialogImpl( QWidget* parent )
83 : PasswordDialog( parent, 0, true ), m_isSet( PasswordDialogImpl::needDialog() ) { 88 : PasswordDialog( parent, 0, true ), m_isSet( PasswordDialogImpl::needDialog() ) {
84} 89}
85 90
86PasswordDialogImpl::~PasswordDialogImpl() { 91PasswordDialogImpl::~PasswordDialogImpl() {
87 /* qt does the stuff for us */ 92 /* qt does the stuff for us */
88} 93}
89 94
90void PasswordDialogImpl::done(int res) { 95void PasswordDialogImpl::done(int res) {
91 m_isSet = true; 96 m_isSet = true;