new interface, updated Angus' license, dependent on HAVE_GETPASS_R
authorDaniel Stenberg <daniel@haxx.se>
Fri, 10 Nov 2000 09:18:25 +0000 (09:18 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 10 Nov 2000 09:18:25 +0000 (09:18 +0000)
lib/getpass.c
lib/getpass.h

index 0811286..f5833cc 100644 (file)
@@ -4,8 +4,9 @@
  * Redistribution and use are freely permitted provided that:
  *
  *   1) This header remain in tact.
- *   2) The prototype for getpass is not changed from:
- *      int getpass_r(const char *prompt, char *buffer, int buflen)
+ *   2) The prototypes for getpass and getpass_r are not changed from:
+ *         char *getpass(const char *prompt)
+ *         char *getpass_r(const char *prompt, char* buffer, int buflen)
  *   3) This source code is not used outside of this(getpass.c) file.
  *   4) Any changes to this(getpass.c) source code are made publicly available.
  *
  *   Daniel Stenberg <daniel@haxx.se>
  */
 
-#ifndef WIN32
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
 
+#ifndef HAVE_GETPASS_R
+
+#ifndef WIN32
 #ifdef HAVE_TERMIOS_H
 #  if !defined(HAVE_TCGETATTR) && !defined(HAVE_TCSETATTR) 
 #    undef HAVE_TERMIOS_H
@@ -68,7 +71,7 @@
 #  define perror(x) fprintf(stderr, "Error in: %s\n", x)
 #endif
 
-int getpass_r(const char *prompt, char *buffer, int buflen)
+char *getpass_r(const char *prompt, char *buffer, int buflen)
 {
   FILE *infp;
   FILE *outfp;
@@ -176,12 +179,12 @@ int getpass_r(const char *prompt, char *buffer, int buflen)
   signal(SIGTSTP, sigtstp);
 #endif
 
-  return 0; /* we always return success */
+  return buffer; /* we always return success */
 }
 #else /* WIN32 */
 #include <stdio.h>
 #include <conio.h>
-int getpass_r(const char *prompt, char *buffer, int buflen)
+char *getpass_r(const char *prompt, char *buffer, int buflen)
 {
   int i;
   printf("%s", prompt);
@@ -197,7 +200,17 @@ int getpass_r(const char *prompt, char *buffer, int buflen)
   if (i==buflen)
     buffer[buflen-1]=0;
 
-  return 0; /* we always return success */
+  return buffer; /* we always return success */
 }
 #endif
 
+#endif /* ifndef HAVE_GETPASS_R */
+
+#if 0
+/* for consistensy, here's the old-style function: */
+char *getpass(const char *prompt)
+{
+  static char buf[256];
+  return getpass_r(prompt, buf, sizeof(buf));
+}
+#endif
index 2f63e6d..6245f22 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef __GETPASS_H
 #define __GETPASS_H
 /*
- * Returning non-zero will abort the continued operation!
+ * Returning NULL will abort the continued operation!
  */
-int getpass_r(char *prompt, char* buffer, int buflen );
+char* getpass_r(char *prompt, char* buffer, int buflen );
 
 #endif