unexpose undefined part of the API, included strlcat

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14926 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2005-04-24 18:57:16 +00:00
parent a6a96fbc46
commit 7e40ed10e4
7 changed files with 98 additions and 65 deletions

View File

@@ -21,7 +21,7 @@
** History and file completion functions for editline library.
*/
#include <config.h>
#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);
}
}

61
lib/editline/edit_locl.h Normal file
View File

@@ -0,0 +1,61 @@
/* $Revision$
**
** Internal header file for editline library.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CRLF "\r\n"
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
#ifdef HAVE_DIRENT_H
#include <dirent.h>
typedef struct dirent DIRENTRY;
#else
#include <sys/dir.h>
typedef struct direct DIRENTRY;
#endif
#include <roken.h>
#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"

View File

@@ -21,7 +21,7 @@
** Main editing routines for editline library.
*/
#include <config.h>
#include "editline.h"
#include "edit_locl.h"
#include <ctype.h>
#include <errno.h>

View File

@@ -1,64 +1,33 @@
/* $Revision$
**
** Internal header file for editline library.
/* 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.
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
/* $Id$ */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* This a modifed version of editline */
#define CRLF "\r\n"
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
#ifdef HAVE_DIRENT_H
#include <dirent.h>
typedef struct dirent DIRENTRY;
#else
#include <sys/dir.h>
typedef struct direct DIRENTRY;
#endif
#include <roken.h>
#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

View File

@@ -57,5 +57,8 @@
#ifndef HAVE_VASNPRINTF
#define vasnprintf _editline_vasnprintf
#endif
#ifndef HAVE_STRLCPU
#define strlcpy _editline_strlcpy
#endif
#endif /* __roken_rename_h__ */

View File

@@ -21,7 +21,7 @@
** Unix system-dependant routines for editline library.
*/
#include <config.h>
#include "editline.h"
#include "edit_locl.h"
#ifdef HAVE_TERMIOS_H
#include <termios.h>
@@ -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);
}

View File

@@ -13,7 +13,7 @@
#endif
#include <getarg.h>
#include "editline.h"
#include "edit_locl.h"
static int n_flag = 0;
static int version_flag = 0;