1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
From 527d258d605e5a1dd841bccc6091c0b894a10411 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
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 <stddef.h>
#include <stdarg.h>
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,20 @@ 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) {
+ strlcpy(str, p->table->msgs[code - p->table->base], len);
+ return str;
+ }
+ }
+ return NULL;
+}
+
+
struct foobar {
struct et_list etl;
struct error_table tab;
--
1.6.6.1
|