summaryrefslogtreecommitdiff
path: root/sys/src/cmd/auth
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2016-07-31 20:06:56 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2016-07-31 20:06:56 +0200
commitae5fb4ab78d7dd776a056045f673129f5a1cc779 (patch)
tree6b5bb580a33a5e2363bb799bfa6bd07d5def954a /sys/src/cmd/auth
parentcf37a1010f7c9aabce1d3598d5a62489eb01d48c (diff)
auth/factotum: use common readcons() function from libauthsrv
Diffstat (limited to 'sys/src/cmd/auth')
-rw-r--r--sys/src/cmd/auth/factotum/dat.h3
-rw-r--r--sys/src/cmd/auth/factotum/util.c121
2 files changed, 7 insertions, 117 deletions
diff --git a/sys/src/cmd/auth/factotum/dat.h b/sys/src/cmd/auth/factotum/dat.h
index 724891b2b..a12bb8e1b 100644
--- a/sys/src/cmd/auth/factotum/dat.h
+++ b/sys/src/cmd/auth/factotum/dat.h
@@ -194,8 +194,6 @@ int canusekey(Fsstate*, Key*);
void closekey(Key*);
uchar *convAI2M(AuthInfo*, uchar*, int);
void disablekey(Key*);
-char *estrappend(char*, char*, ...);
-#pragma varargck argpos estrappend 2
int failure(Fsstate*, char*, ...);
Keyinfo* mkkeyinfo(Keyinfo*, Fsstate*, Attr*);
int findkey(Key**, Keyinfo*, char*, ...);
@@ -209,7 +207,6 @@ char *mkcap(char*, char*);
int phaseerror(Fsstate*, char*);
char *phasename(Fsstate*, int, char*);
void promptforhostowner(void);
-char *readcons(char*, char*, int);
int replacekey(Key*, int before);
char *safecpy(char*, char*, int);
Attr *setattr(Attr*, char*, ...);
diff --git a/sys/src/cmd/auth/factotum/util.c b/sys/src/cmd/auth/factotum/util.c
index 8448143dc..4686bc5af 100644
--- a/sys/src/cmd/auth/factotum/util.c
+++ b/sys/src/cmd/auth/factotum/util.c
@@ -687,131 +687,24 @@ phasename(Fsstate *fss, int phase, char *tmp)
return name;
}
-static int
-outin(char *prompt, char *def, int len)
-{
- char *s;
-
- s = readcons(prompt, def, 0);
- if(s == nil)
- return -1;
- if(s == nil)
- sysfatal("s==nil???");
- strncpy(def, s, len);
- def[len-1] = 0;
- free(s);
- return strlen(def);
-}
-
/*
* get host owner and set it
*/
void
promptforhostowner(void)
{
- char owner[64], *p;
+ char *p;
/* hack for bitsy; can't prompt during boot */
- if(p = getenv("user")){
- writehostowner(p);
+ p = getenv("user");
+ while(p == nil || *p == 0){
free(p);
- return;
+ p = readcons("user", "glenda", 0);
+ if(p == nil)
+ return;
}
+ writehostowner(p);
free(p);
-
- strcpy(owner, "glenda");
- do{
- outin("user", owner, sizeof(owner));
- } while(*owner == 0);
- writehostowner(owner);
-}
-
-char*
-estrappend(char *s, char *fmt, ...)
-{
- char *t;
- va_list arg;
-
- va_start(arg, fmt);
- t = vsmprint(fmt, arg);
- if(t == nil)
- sysfatal("out of memory");
- va_end(arg);
- s = erealloc(s, strlen(s)+strlen(t)+1);
- strcat(s, t);
- free(t);
- return s;
-}
-
-
-/*
- * prompt for a string with a possible default response
- */
-char*
-readcons(char *prompt, char *def, int raw)
-{
- int fdin, fdout, ctl, n;
- char line[10];
- char *s;
-
- fdin = open("/dev/cons", OREAD);
- if(fdin < 0)
- fdin = 0;
- fdout = open("/dev/cons", OWRITE);
- if(fdout < 0)
- fdout = 1;
- if(def != nil)
- fprint(fdout, "%s[%s]: ", prompt, def);
- else
- fprint(fdout, "%s: ", prompt);
- if(raw){
- ctl = open("/dev/consctl", OWRITE);
- if(ctl >= 0)
- write(ctl, "rawon", 5);
- } else
- ctl = -1;
- s = estrdup("");
- for(;;){
- n = read(fdin, line, 1);
- if(n == 0){
- Error:
- close(fdin);
- close(fdout);
- if(ctl >= 0)
- close(ctl);
- free(s);
- return nil;
- }
- if(n < 0)
- goto Error;
- if(line[0] == 0x7f)
- goto Error;
- if(n == 0 || line[0] == '\n' || line[0] == '\r'){
- if(raw){
- write(ctl, "rawoff", 6);
- write(fdout, "\n", 1);
- }
- close(ctl);
- close(fdin);
- close(fdout);
- if(*s == 0 && def != nil)
- s = estrappend(s, "%s", def);
- return s;
- }
- if(line[0] == '\b'){
- if(strlen(s) > 0)
- s[strlen(s)-1] = 0;
- } else if(line[0] == 0x15) { /* ^U: line kill */
- if(def != nil)
- fprint(fdout, "\n%s[%s]: ", prompt, def);
- else
- fprint(fdout, "\n%s: ", prompt);
-
- s[0] = 0;
- } else {
- s = estrappend(s, "%c", line[0]);
- }
- }
}
/*