]> source.dussan.org Git - tigervnc.git/commitdiff
Reuse the getpasswd() function in filter mode so that the new line is stripped from...
authorDRC <dcommander@users.sourceforge.net>
Fri, 9 Jul 2010 19:48:26 +0000 (19:48 +0000)
committerDRC <dcommander@users.sourceforge.net>
Fri, 9 Jul 2010 19:48:26 +0000 (19:48 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4086 3789f03b-4d11-0410-bbf8-ca57d06f2519

unix/vncpasswd/vncpasswd.cxx

index a8f3afd0f6d944e0f16772f590062803f2c618aa..d21ea94224945353bb8f735d4f015c900e1d7a37 100644 (file)
@@ -54,7 +54,7 @@ static void enableEcho(bool enable) {
 
 static char* getpassword(const char* prompt) {
   PlainPasswd buf(256);
-  fputs(prompt, stdout);
+  if (prompt) fputs(prompt, stdout);
   enableEcho(false);
   char* result = fgets(buf.buf, 256, stdin);
   enableEcho(true);
@@ -68,15 +68,16 @@ static char* getpassword(const char* prompt) {
 
 // Reads password from stdin and prints encrypted password to stdout.
 static int encrypt_pipe() {
-  PlainPasswd buf(256);
-  fgets(buf.buf, 256, stdin);
-  ObfuscatedPasswd obfuscated(buf);
-  //fputs(prompt, stdout);
-  if (fwrite(obfuscated.buf, obfuscated.length, 1, stdout) != 1) {
-    fprintf(stderr,"Writing to stdout failed\n");
-    return 1;
+  char *result = getpassword(NULL);
+  if (result) {
+    ObfuscatedPasswd obfuscated(result);
+    if (fwrite(obfuscated.buf, obfuscated.length, 1, stdout) != 1) {
+      fprintf(stderr,"Writing to stdout failed\n");
+      return 1;
+    }
+    return 0;
   }
-  return 0;
+  else return 1;
 }
 
 int main(int argc, char** argv)