summaryrefslogtreecommitdiffstats
path: root/main/e2fsprogs/0001-implement-com_right_r.patch
blob: dc285d9acde0fb2b0f73a444328eba5f70a40c27 (plain)
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