diff --git a/src/uifc/uifc32.c b/src/uifc/uifc32.c index d458c311851396095c4c8262d9c70ddac0551891..73d8562928f95b7c8b250cf07898d8ee76b21a33 100644 --- a/src/uifc/uifc32.c +++ b/src/uifc/uifc32.c @@ -1375,7 +1375,7 @@ int ulist(int mode, int left, int top, int width, int *cur, int *bar /*************************************************************************/ /* This function is a windowed input string input routine. */ /*************************************************************************/ -int uinput(int mode, int left, int top, char *prompt, char *str, +int uinput(int mode, int left, int top, char *inprompt, char *str, int max, int kmode) { unsigned char save_buf[2048],in_win[2048] @@ -1384,9 +1384,11 @@ int uinput(int mode, int left, int top, char *prompt, char *str, int height=3; int i,plen,slen,j; int iwidth; + char *prompt; reset_dynamic(); - plen=strlen(prompt); + plen=strlen(inprompt); + prompt=strdup(inprompt); if(!plen) slen=4; else @@ -1406,6 +1408,16 @@ int uinput(int mode, int left, int top, char *prompt, char *str, gettext(SCRN_LEFT+left,SCRN_TOP+top,SCRN_LEFT+left+width+1 ,SCRN_TOP+top+height,save_buf); iwidth=width-plen-slen; + while(iwidth<1 && plen>4) { + plen=strlen(prompt); + prompt[plen-1]=0; + prompt[plen-2]='.'; + prompt[plen-3]='.'; + prompt[plen-4]='.'; + plen--; + iwidth=width-plen-slen; + } + i=0; in_win[i++]='�'; in_win[i++]=hclr|(bclr<<4); @@ -1495,6 +1507,7 @@ int uinput(int mode, int left, int top, char *prompt, char *str, if(mode&WIN_SAV) puttext(SCRN_LEFT+left,SCRN_TOP+top,SCRN_LEFT+left+width+1 ,SCRN_TOP+top+height,save_buf); + free(prompt); return(i); }