From 7e40ed10e46dab6c7a604c056887ded676162630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Sun, 24 Apr 2005 18:57:16 +0000 Subject: [PATCH] unexpose undefined part of the API, included strlcat git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14926 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/editline/complete.c | 4 +- lib/editline/edit_locl.h | 61 ++++++++++++++++++++++++++ lib/editline/editline.c | 2 +- lib/editline/editline.h | 85 ++++++++++++------------------------- lib/editline/roken_rename.h | 3 ++ lib/editline/sysunix.c | 6 +-- lib/editline/testit.c | 2 +- 7 files changed, 98 insertions(+), 65 deletions(-) create mode 100644 lib/editline/edit_locl.h diff --git a/lib/editline/complete.c b/lib/editline/complete.c index 9dfa582cc..bd1d9d670 100644 --- a/lib/editline/complete.c +++ b/lib/editline/complete.c @@ -21,7 +21,7 @@ ** History and file completion functions for editline library. */ #include -#include "editline.h" +#include "edit_locl.h" RCSID("$Id$"); @@ -160,7 +160,7 @@ rl_complete_filename(char *pathname, int *unique) memcpy(p, av[0] + len, j); asprintf(&new, "%s%s", pathname, p); if(new != NULL) { - rl_add_slash(new, p); + rl_add_slash(new, p, j + 1); free(new); } } diff --git a/lib/editline/edit_locl.h b/lib/editline/edit_locl.h new file mode 100644 index 000000000..5118497a3 --- /dev/null +++ b/lib/editline/edit_locl.h @@ -0,0 +1,61 @@ +/* $Revision$ +** +** Internal header file for editline library. +*/ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#define CRLF "\r\n" + +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_SYS_STAT_H +#include +#endif + +#ifdef HAVE_DIRENT_H +#include +typedef struct dirent DIRENTRY; +#else +#include +typedef struct direct DIRENTRY; +#endif + +#include + +#if !defined(S_ISDIR) +#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#endif /* !defined(S_ISDIR) */ + +typedef unsigned char CHAR; + +#define MEM_INC 64 +#define SCREEN_INC 256 + +/* +** Variables and routines internal to this package. +*/ +extern int rl_eof; +extern int rl_erase; +extern int rl_intr; +extern int rl_kill; +extern int rl_quit; + +typedef char* (*rl_complete_func_t)(char*, int*); + +typedef int (*rl_list_possib_func_t)(char*, char***); + +void rl_add_slash (char*, char*, size_t); +int rl_list_possib (char*, char***); +void rl_ttyset (int); +rl_complete_func_t rl_set_complete_func (rl_complete_func_t); +rl_list_possib_func_t rl_set_list_possib_func (rl_list_possib_func_t); + +#include "editline.h" + diff --git a/lib/editline/editline.c b/lib/editline/editline.c index 3b4d4207e..885007f7c 100644 --- a/lib/editline/editline.c +++ b/lib/editline/editline.c @@ -21,7 +21,7 @@ ** Main editing routines for editline library. */ #include -#include "editline.h" +#include "edit_locl.h" #include #include diff --git a/lib/editline/editline.h b/lib/editline/editline.h index 091545a61..71604fc55 100644 --- a/lib/editline/editline.h +++ b/lib/editline/editline.h @@ -1,64 +1,33 @@ -/* $Revision$ -** -** Internal header file for editline library. -*/ -#ifdef HAVE_CONFIG_H -#include -#endif +/* Copyright 1992 Simmule Turner and Rich Salz. All rights reserved. + * + * This software is not subject to any license of the American Telephone + * and Telegraph Company or of the Regents of the University of California. + * + * Permission is granted to anyone to use this software for any purpose on + * any computer system, and to alter it and redistribute it freely, subject + * to the following restrictions: + * 1. The authors are not responsible for the consequences of use of this + * software, no matter how awful, even if they arise from flaws in it. + * 2. The origin of this software must not be misrepresented, either by + * explicit claim or by omission. Since few users ever read sources, + * credits must appear in the documentation. + * 3. Altered versions must be plainly marked as such, and must not be + * misrepresented as being the original software. Since few users + * ever read sources, credits must appear in the documentation. + * 4. This notice may not be removed or altered. + */ +/* $Id$ */ -#include -#include -#include +/* This a modifed version of editline */ -#define CRLF "\r\n" - -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_STAT_H -#include -#endif - -#ifdef HAVE_DIRENT_H -#include -typedef struct dirent DIRENTRY; -#else -#include -typedef struct direct DIRENTRY; -#endif - -#include - -#if !defined(S_ISDIR) -#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) -#endif /* !defined(S_ISDIR) */ - -typedef unsigned char CHAR; - -#define MEM_INC 64 -#define SCREEN_INC 256 - -/* -** Variables and routines internal to this package. -*/ -extern int rl_eof; -extern int rl_erase; -extern int rl_intr; -extern int rl_kill; -extern int rl_quit; - -typedef char* (*rl_complete_func_t)(char*, int*); - -typedef int (*rl_list_possib_func_t)(char*, char***); +#ifndef __HEIM_EDITLINE +#define __HEIM_EDITLINE 1 +void rl_initialize (void); void add_history (char*); char* readline (const char* prompt); -void rl_add_slash (char*, char*); -char* rl_complete (char*, int*); -void rl_initialize (void); -int rl_list_possib (char*, char***); +char* rl_complete (char*, int*); /* warning diffrent api the gnu readline */ void rl_reset_terminal (char*); -void rl_ttyset (int); -rl_complete_func_t rl_set_complete_func (rl_complete_func_t); -rl_list_possib_func_t rl_set_list_possib_func (rl_list_possib_func_t); - + +#endif + diff --git a/lib/editline/roken_rename.h b/lib/editline/roken_rename.h index 7562269ed..cde001c4f 100644 --- a/lib/editline/roken_rename.h +++ b/lib/editline/roken_rename.h @@ -57,5 +57,8 @@ #ifndef HAVE_VASNPRINTF #define vasnprintf _editline_vasnprintf #endif +#ifndef HAVE_STRLCPU +#define strlcpy _editline_strlcpy +#endif #endif /* __roken_rename_h__ */ diff --git a/lib/editline/sysunix.c b/lib/editline/sysunix.c index 5b70669b2..3dbff6c34 100644 --- a/lib/editline/sysunix.c +++ b/lib/editline/sysunix.c @@ -21,7 +21,7 @@ ** Unix system-dependant routines for editline library. */ #include -#include "editline.h" +#include "edit_locl.h" #ifdef HAVE_TERMIOS_H #include @@ -83,10 +83,10 @@ rl_ttyset(int Reset) #endif /* HAVE_TERMIOS_H */ void -rl_add_slash(char *path, char *p) +rl_add_slash(char *path, char *p, size_t len) { struct stat Sb; if (stat(path, &Sb) >= 0) - strcat(p, S_ISDIR(Sb.st_mode) ? "/" : " "); + strlcat(p, S_ISDIR(Sb.st_mode) ? "/" : " ", len); } diff --git a/lib/editline/testit.c b/lib/editline/testit.c index 187094284..06d2d70bc 100644 --- a/lib/editline/testit.c +++ b/lib/editline/testit.c @@ -13,7 +13,7 @@ #endif #include -#include "editline.h" +#include "edit_locl.h" static int n_flag = 0; static int version_flag = 0;