summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/opie-login/passworddialogimpl.cpp1
1 files changed, 0 insertions, 1 deletions
diff --git a/core/opie-login/passworddialogimpl.cpp b/core/opie-login/passworddialogimpl.cpp
index aeb7516..951c4e1 100644
--- a/core/opie-login/passworddialogimpl.cpp
+++ b/core/opie-login/passworddialogimpl.cpp
@@ -114,97 +114,96 @@ void PasswordDialogImpl::done(int res) {
114 } 114 }
115 115
116 if(m_isSet) 116 if(m_isSet)
117 PasswordDialog::done( res ); 117 PasswordDialog::done( res );
118} 118}
119 119
120/* 120/*
121 * Lets see if we can write either shadow 121 * Lets see if we can write either shadow
122 * 122 *
123 */ 123 */
124/** 124/**
125 * CRYPT the password and then tries to write it either to the shadow password 125 * CRYPT the password and then tries to write it either to the shadow password
126 * or to the plain /etc/passwd 126 * or to the plain /etc/passwd
127 */ 127 */
128void PasswordDialogImpl::writePassword() { 128void PasswordDialogImpl::writePassword() {
129 /* 129 /*
130 * Check if both texts are the same 130 * Check if both texts are the same
131 */ 131 */
132 if ( m_pass->text() != m_confirm->text() ) 132 if ( m_pass->text() != m_confirm->text() )
133 return error( tr("Passwords don't match"), 133 return error( tr("Passwords don't match"),
134 tr("<qt>The two passwords don't match. Please try again.</qt>") ); 134 tr("<qt>The two passwords don't match. Please try again.</qt>") );
135 135
136 136
137 /* 137 /*
138 * Now crypt the password so we can write it later 138 * Now crypt the password so we can write it later
139 */ 139 */
140 char* password = ::crypt( m_pass->text().latin1(), crypt_make_salt() ); 140 char* password = ::crypt( m_pass->text().latin1(), crypt_make_salt() );
141 141
142 if ( !password ) 142 if ( !password )
143 return error( tr("Password not legal" ), 143 return error( tr("Password not legal" ),
144 tr("<qt>The entered password is not a valid password." 144 tr("<qt>The entered password is not a valid password."
145 "Please try entering a valid password.</qt>" ) ); 145 "Please try entering a valid password.</qt>" ) );
146 146
147 /* rewind and rewrite the password file */ 147 /* rewind and rewrite the password file */
148 ::setpwent(); 148 ::setpwent();
149 149
150 FILE* file = ::fopen( "/etc/passwd.new", "w" ); 150 FILE* file = ::fopen( "/etc/passwd.new", "w" );
151 struct passwd* pass; 151 struct passwd* pass;
152 while ( (pass = ::getpwent()) != 0l ) { 152 while ( (pass = ::getpwent()) != 0l ) {
153 /* no shadow password support */ 153 /* no shadow password support */
154 if ( pass->pw_uid == 0 ) 154 if ( pass->pw_uid == 0 )
155 pass->pw_passwd = password; 155 pass->pw_passwd = password;
156 156
157 ::putpwent( pass, file ); 157 ::putpwent( pass, file );
158 } 158 }
159 159
160 ::fclose( file ); 160 ::fclose( file );
161 ::endpwent(); 161 ::endpwent();
162 ::unlink("/etc/passwd");
163 ::rename("/etc/passwd.new","/etc/passwd" ); 162 ::rename("/etc/passwd.new","/etc/passwd" );
164 163
165 /* should be done now */ 164 /* should be done now */
166#ifdef OPIE_LOGIN_SHADOW_PW 165#ifdef OPIE_LOGIN_SHADOW_PW
167 #error "Can't write Shadow Passwords fixme" 166 #error "Can't write Shadow Passwords fixme"
168#endif 167#endif
169} 168}
170 169
171/** 170/**
172 * Raise an error. Delete input and set the focus after showing 171 * Raise an error. Delete input and set the focus after showing
173 * the error to the user 172 * the error to the user
174 */ 173 */
175void PasswordDialogImpl::error( const QString& caption, const QString& text ) { 174void PasswordDialogImpl::error( const QString& caption, const QString& text ) {
176 m_isSet = false; 175 m_isSet = false;
177 QMessageBox::critical(this,caption, text, 176 QMessageBox::critical(this,caption, text,
178 QMessageBox::Ok, QMessageBox::NoButton ); 177 QMessageBox::Ok, QMessageBox::NoButton );
179 178
180 m_pass->setText(""); 179 m_pass->setText("");
181 m_pass->setFocus(); 180 m_pass->setFocus();
182 181
183 m_confirm->setText(""); 182 m_confirm->setText("");
184} 183}
185 184
186void PasswordDialogImpl::slotToggleEcho( bool b ) { 185void PasswordDialogImpl::slotToggleEcho( bool b ) {
187 m_pass-> setEchoMode( b ? QLineEdit::Normal : QLineEdit::Password ); 186 m_pass-> setEchoMode( b ? QLineEdit::Normal : QLineEdit::Password );
188 m_confirm->setEchoMode( b ? QLineEdit::Normal : QLineEdit::Password ); 187 m_confirm->setEchoMode( b ? QLineEdit::Normal : QLineEdit::Password );
189} 188}
190 189
191///////////////////////// 190/////////////////////////
192/// static functions 191/// static functions
193/// 192///
194 193
195/** 194/**
196 * Ask whether or not we need to show the dialog. It returns true if 195 * Ask whether or not we need to show the dialog. It returns true if
197 * no root password is set so that the user will be able to set one. 196 * no root password is set so that the user will be able to set one.
198 */ 197 */
199bool PasswordDialogImpl::needDialog() { 198bool PasswordDialogImpl::needDialog() {
200 /* 199 /*
201 * This can cope with no password and shadow passwords 200 * This can cope with no password and shadow passwords
202 * Let us go through the user database until we find 'root' and then 201 * Let us go through the user database until we find 'root' and then
203 * see if it is 'shadow' and see if shadow is empty or see if the password is empty 202 * see if it is 'shadow' and see if shadow is empty or see if the password is empty
204 */ 203 */
205 bool need = false; 204 bool need = false;
206 struct passwd *pwd; 205 struct passwd *pwd;
207 ::setpwent(); 206 ::setpwent();
208 207
209 while((pwd = ::getpwent() ) ) { 208 while((pwd = ::getpwent() ) ) {
210 /* found root */ 209 /* found root */