From 527d258d605e5a1dd841bccc6091c0b894a10411 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 27 Jan 2010 16:02:08 +0000 Subject: [PATCH] implement com_right_r() For heimdal compat --- lib/et/com_err.h | 2 ++ lib/et/com_right.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 0 deletions(-) diff --git a/lib/et/com_err.h b/lib/et/com_err.h index de0146e..eb2106f 100644 --- a/lib/et/com_err.h +++ b/lib/et/com_err.h @@ -16,6 +16,7 @@ #define COM_ERR_ATTR(x) #endif +#include #include typedef long errcode_t; @@ -49,6 +50,7 @@ extern void add_to_error_table(struct et_list *new_table); /* Provided for Heimdall compatibility */ extern const char *com_right(struct et_list *list, long code); +extern const char *com_right_r(struct et_list *list, long code, char *str, size_t len); extern void initialize_error_table_r(struct et_list **list, const char **messages, int num_errors, diff --git a/lib/et/com_right.c b/lib/et/com_right.c index 173fd1a..dbc1e41 100644 --- a/lib/et/com_right.c +++ b/lib/et/com_right.c @@ -55,6 +55,21 @@ com_right(struct et_list *list, long code) return NULL; } +const char * +com_right_r(struct et_list *list, long code, char *str, size_t len) +{ + struct et_list *p; + for (p = list; p; p = p->next) { + if (code >= p->table->base && code < p->table->base + p->table->n_msgs) { + strncpy(str, p->table->msgs[code - p->table->base], len); + str[len-1] = '\0'; + return str; + } + } + return NULL; +} + + struct foobar { struct et_list etl; struct error_table tab; -- 1.6.6.1