diff options
author | Daniel Stenberg <daniel@haxx.se> | 2001-08-06 12:20:28 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2001-08-06 12:20:28 +0000 |
commit | 6f543f3ede618e1f980e1c54bf9560ee196678e2 (patch) | |
tree | d11189bcfa64ba84379d45d3e159628b4fa857cf | |
parent | 93bcfd4e65ba660e0bd45b7c25a0f8cb76c8368c (diff) |
Nico Baggus made it work and compile under VMS!
-rw-r--r-- | lib/getpass.c | 25 |
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> |