(readline): be more liberal in what we accept from el_gets. if count
== 0 -> interpret it as EOF. also copy the string first and then cut of the newline, it's cleaner git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7988 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		@@ -1,5 +1,5 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 1995, 1996, 1997, 1998 Kungliga Tekniska H<>gskolan
 | 
					 * Copyright (c) 1995 - 2000 Kungliga Tekniska H<>gskolan
 | 
				
			||||||
 * (Royal Institute of Technology, Stockholm, Sweden).
 | 
					 * (Royal Institute of Technology, Stockholm, Sweden).
 | 
				
			||||||
 * All rights reserved.
 | 
					 * All rights reserved.
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
@@ -73,7 +73,8 @@ readline(const char* prompt)
 | 
				
			|||||||
    HistEvent ev;
 | 
					    HistEvent ev;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    int count;
 | 
					    int count;
 | 
				
			||||||
    char *ret;
 | 
					    const char *str;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if(e == NULL){
 | 
					    if(e == NULL){
 | 
				
			||||||
#ifdef EL_INIT_FOUR
 | 
					#ifdef EL_INIT_FOUR
 | 
				
			||||||
	e = el_init("", stdin, stdout, stderr);
 | 
						e = el_init("", stdin, stdout, stderr);
 | 
				
			||||||
@@ -91,11 +92,16 @@ readline(const char* prompt)
 | 
				
			|||||||
	el_set(e, EL_EDITOR, "emacs"); /* XXX? */
 | 
						el_set(e, EL_EDITOR, "emacs"); /* XXX? */
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pr = prompt ? prompt : "";
 | 
					    pr = prompt ? prompt : "";
 | 
				
			||||||
    ret = (char*)el_gets(e, &count);
 | 
					    str = el_gets(e, &count);
 | 
				
			||||||
    if (ret) {
 | 
					    if (str && count > 0) {
 | 
				
			||||||
 | 
						char *ret = strdup (str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (ret == NULL)
 | 
				
			||||||
 | 
						    return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ret[strlen(ret) - 1] == '\n')
 | 
						if (ret[strlen(ret) - 1] == '\n')
 | 
				
			||||||
	    ret[strlen(ret) - 1] = '\0';
 | 
						    ret[strlen(ret) - 1] = '\0';
 | 
				
			||||||
	return strdup(ret);
 | 
						return ret;
 | 
				
			||||||
    } 
 | 
					    } 
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user