Metropoli BBS
VIEWER: getpass.c MODE: TEXT (ASCII)
#include <stdio.h>
#include <conio.h>

#define _PASSWORD_LEN 128

/* Issue prompt and read reply with echo turned off */
char *getpass (const char *prompt)
{
  static char pbuf[_PASSWORD_LEN+1];
  int c, i;

  fputs (prompt, stderr);
  fflush (stderr);
  i = 0;
  for (;;)
    {
      c = getch ();
      if (c == '\r' || c == '\n')
        break;
      if (c == '\b' || c == 127)
        {
          if (i > 0) --i;
        }
      else if (c == 0x15 || c == 0x1b)
        i = 0;
      else if (i < sizeof (pbuf)-1)
        pbuf[i++] = (char)c;
    }
  pbuf[i] = 0;
  fputs ("\r\n", stderr);
  fflush (stderr);
  return (pbuf);
}
[ RETURN TO DIRECTORY ]