#include <varargs.h>
#include <vms/iodef.h>
#include <vms/fab.h>
#include <vms/nam.h>
#include <stdio.h>
#include <string.h>

#include <stdlib.h>
#include <ctype.h>
#include <builtins.h>
#include <vms/stsdef.h>
#include <vms/descrip.h>
#include <vms/prvdef.h>
#include <vms/ssdef.h>

    typedef unsigned int LONG;
    typedef unsigned short WORD;
    typedef unsigned char BYTE;
    typedef struct dsc$descriptor SDESC;
    typedef struct ITMLST {
    	WORD bufsiz, itmcod;
    	void *bufadr, *retlen;
    } ITMLST;

    struct QUEUE {
    	void *head, *tail;
    };

#define INIT_DYNDESC(str) {str.dsc$w_length = 0; str.dsc$a_pointer = (void *) 0;\
	    str.dsc$b_class = DSC$K_CLASS_D; str.dsc$b_dtype = DSC$K_DTYPE_T;}
#define INIT_SDESC(str,len,ptr) {str.dsc$w_length=(len);str.dsc$a_pointer=(char *)(ptr);\
	    str.dsc$b_class=DSC$K_CLASS_S; str.dsc$b_dtype=DSC$K_DTYPE_T;}
#define ITMLST_INIT(itm,cod,siz,buf,ret) {\
    	(itm).bufsiz = siz; (itm).itmcod = cod;\
    	(itm).bufadr = buf; (itm).retlen = ret;}
#define OK(s) $VMS_STATUS_SUCCESS(s)


#ifdef __ALPHA
#define ARG unsigned __int64
#else
#define ARG LONG
#endif

LONG get_input_noecho(SDESC *, char *);



main()
{

    unsigned int status, ctx;
    SDESC srvdsc, usrdsc, passdsc;
    int cid;

    INIT_DYNDESC(passdsc);

    get_input_noecho(&passdsc, "Password: ");

    
}




LONG get_input_noecho(SDESC *outdsc, char *prompt) {

    char inpbuf[256];
    WORD iosb[4], chan;
    LONG status;
    static $DESCRIPTOR(sysinput, "SYS$INPUT:");

    status = sys$assign(&sysinput, &chan, 0, 0);
    if (!OK(status)) return status;

    status = sys$qiow(0, chan, IO$_READPROMPT|IO$M_NOECHO, iosb, 0, 0,
    	inpbuf, sizeof(inpbuf), 0, 0, prompt, strlen(prompt));

    sys$dassgn(chan);

    if (OK(status)) status = iosb[0];
    if (OK(status)) str$copy_r(outdsc, &iosb[1], inpbuf);

    return status;

} 
