aboutsummaryrefslogtreecommitdiff
path: root/lib/getpass.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2001-08-06 12:20:28 +0000
committerDaniel Stenberg <daniel@haxx.se>2001-08-06 12:20:28 +0000
commit6f543f3ede618e1f980e1c54bf9560ee196678e2 (patch)
treed11189bcfa64ba84379d45d3e159628b4fa857cf /lib/getpass.c
parent93bcfd4e65ba660e0bd45b7c25a0f8cb76c8368c (diff)
Nico Baggus made it work and compile under VMS!
Diffstat (limited to 'lib/getpass.c')
-rw-r--r--lib/getpass.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/getpass.c b/lib/getpass.c
index 7477742e0..01d3ea7c9 100644
--- a/lib/getpass.c
+++ b/lib/getpass.c
@@ -42,6 +42,30 @@
#ifndef HAVE_GETPASS_R
#ifndef WIN32
+#ifdef VMS
+#include <stdio.h>
+#include <string.h>
+#include descrip
+#include starlet
+#include iodef
+#include iosbdef
+char *getpass_r(const char *prompt, char *buffer, size_t buflen)
+{
+ long sts;
+ short chan;
+ struct _iosb iosb;
+ $DESCRIPTOR(ttdesc, "TT");
+
+ buffer[0]='\0';
+ if ((sts = sys$assign(&ttdesc, &chan,0,0)) & 1) {
+ if (((sts = sys$qiow(0, chan, IO$_READPROMPT | IO$M_NOECHO, &iosb, 0, 0, buffer, buflen, 0, 0, prompt, strlen(prompt))) & 1) && (iosb.iosb$w_status&1)) {
+ buffer[iosb.iosb$w_bcnt] = '\0';
+ }
+ sts = sys$dassgn(chan);
+ }
+ return buffer; /* we always return success */
+}
+#else /* VMS */
#ifdef HAVE_TERMIOS_H
# if !defined(HAVE_TCGETATTR) && !defined(HAVE_TCSETATTR)
# undef HAVE_TERMIOS_H
@@ -186,6 +210,7 @@ char *getpass_r(const char *prompt, char *buffer, size_t buflen)
return buffer; /* we always return success */
}
+#endif /* VMS */
#else /* WIN32 */
#include <stdio.h>
#include <conio.h>