tools/mtd-utils: add two upstream patches
[openwrt/svn-archive/archive.git] / tools / mtd-utils / patches / 000-upstream_jffs2reader.patch
1 From fec81abd9593fe11ba8577d38e4143e5708e3343 Mon Sep 17 00:00:00 2001
2 From: Mike Frysinger <vapier@gentoo.org>
3 Date: Sat, 2 Oct 2010 14:58:09 -0400
4 Subject: [PATCH] jffs2reader: convert to common.h helpers
5
6 Signed-off-by: Mike Frysinger <vapier@gentoo.org>
7 Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
8 ---
9 jffs2reader.c | 71 +++++++++++++++++---------------------------------------
10 1 files changed, 22 insertions(+), 49 deletions(-)
11
12 diff --git a/jffs2reader.c b/jffs2reader.c
13 index 0cdff19..d5a3d95 100644
14 --- a/jffs2reader.c
15 +++ b/jffs2reader.c
16 @@ -77,6 +77,7 @@ BUGS:
17 #include <sys/param.h>
18 #include <dirent.h>
19 #include <linux/jffs2.h>
20 +#include "common.h"
21
22 #define SCRATCH_SIZE (5*1024*1024)
23
24 @@ -136,10 +137,8 @@ void putblock(char *b, size_t bsize, size_t * rsize,
25 {
26 uLongf dlen = n->dsize;
27
28 - if (n->isize > bsize || (n->offset + dlen) > bsize) {
29 - fprintf(stderr, "File does not fit into buffer!\n");
30 - exit(EXIT_FAILURE);
31 - }
32 + if (n->isize > bsize || (n->offset + dlen) > bsize)
33 + errmsg_die("File does not fit into buffer!");
34
35 if (*rsize < n->isize)
36 bzero(b + *rsize, n->isize - *rsize);
37 @@ -163,8 +162,7 @@ void putblock(char *b, size_t bsize, size_t * rsize,
38 /* [DYN]RUBIN support required! */
39
40 default:
41 - fprintf(stderr, "Unsupported compression method!\n");
42 - exit(EXIT_FAILURE);
43 + errmsg_die("Unsupported compression method!");
44 }
45
46 *rsize = n->isize;
47 @@ -188,7 +186,7 @@ struct dir *putdir(struct dir *dd, struct jffs2_raw_dirent *n)
48
49 if (n->ino) {
50 if (dd == NULL) {
51 - d = malloc(sizeof(struct dir));
52 + d = xmalloc(sizeof(struct dir));
53 d->type = n->type;
54 memcpy(d->name, n->name, n->nsize);
55 d->nsize = n->nsize;
56 @@ -208,7 +206,7 @@ struct dir *putdir(struct dir *dd, struct jffs2_raw_dirent *n)
57 }
58
59 if (dd->next == NULL) {
60 - dd->next = malloc(sizeof(struct dir));
61 + dd->next = xmalloc(sizeof(struct dir));
62 dd->next->type = n->type;
63 memcpy(dd->next->name, n->name, n->nsize);
64 dd->next->nsize = n->nsize;
65 @@ -344,7 +342,7 @@ void printdir(char *o, size_t size, struct dir *d, char *path, int recurse)
66 }
67 ri = find_raw_inode(o, size, d->ino);
68 if (!ri) {
69 - fprintf(stderr, "bug: raw_inode missing!\n");
70 + warnmsg("bug: raw_inode missing!");
71 d = d->next;
72 continue;
73 }
74 @@ -379,11 +377,7 @@ void printdir(char *o, size_t size, struct dir *d, char *path, int recurse)
75
76 if (d->type == DT_DIR && recurse) {
77 char *tmp;
78 - tmp = malloc(BUFSIZ);
79 - if (!tmp) {
80 - fprintf(stderr, "memory exhausted\n");
81 - exit(EXIT_FAILURE);
82 - }
83 + tmp = xmalloc(BUFSIZ);
84 sprintf(tmp, "%s/%s", path, d->name);
85 lsdir(o, size, tmp, recurse); /* Go recursive */
86 free(tmp);
87 @@ -817,11 +811,8 @@ void lsdir(char *o, size_t size, char *path, int recurse)
88 dd = resolvepath(o, size, 1, path, &ino);
89
90 if (ino == 0 ||
91 - (dd == NULL && ino == 0) || (dd != NULL && dd->type != DT_DIR)) {
92 - fprintf(stderr, "%s: %s: No such file or directory\n",
93 - PROGRAM_NAME, path);
94 - exit(EXIT_FAILURE);
95 - }
96 + (dd == NULL && ino == 0) || (dd != NULL && dd->type != DT_DIR))
97 + errmsg_die("%s: No such file or directory", path);
98
99 d = collectdir(o, size, ino, d);
100 printdir(o, size, d, path, recurse);
101 @@ -848,15 +839,11 @@ void catfile(char *o, size_t size, char *path, char *b, size_t bsize,
102
103 dd = resolvepath(o, size, 1, path, &ino);
104
105 - if (ino == 0) {
106 - fprintf(stderr, "%s: No such file or directory\n", path);
107 - exit(EXIT_FAILURE);
108 - }
109 + if (ino == 0)
110 + errmsg_die("%s: No such file or directory", path);
111
112 - if (dd == NULL || dd->type != DT_REG) {
113 - fprintf(stderr, "%s: Not a regular file\n", path);
114 - exit(EXIT_FAILURE);
115 - }
116 + if (dd == NULL || dd->type != DT_REG)
117 + errmsg_die("%s: Not a regular file", path);
118
119 ri = find_raw_inode(o, size, ino);
120 putblock(b, bsize, rsize, ri);
121 @@ -896,36 +883,22 @@ int main(int argc, char **argv)
122 }
123
124 fd = open(argv[optind], O_RDONLY);
125 - if (fd == -1) {
126 - fprintf(stderr, "%s: %s\n", argv[optind], strerror(errno));
127 - exit(2);
128 - }
129 + if (fd == -1)
130 + sys_errmsg_die("%s", argv[optind]);
131
132 - if (fstat(fd, &st)) {
133 - fprintf(stderr, "%s: %s\n", argv[optind], strerror(errno));
134 - exit(3);
135 - }
136 + if (fstat(fd, &st))
137 + sys_errmsg_die("%s", argv[optind]);
138
139 - buf = malloc((size_t) st.st_size);
140 - if (buf == NULL) {
141 - fprintf(stderr, "%s: memory exhausted\n", argv[optind]);
142 - exit(4);
143 - }
144 + buf = xmalloc((size_t) st.st_size);
145
146 - if (read(fd, buf, st.st_size) != (ssize_t) st.st_size) {
147 - fprintf(stderr, "%s: %s\n", argv[optind], strerror(errno));
148 - exit(5);
149 - }
150 + if (read(fd, buf, st.st_size) != (ssize_t) st.st_size)
151 + sys_errmsg_die("%s", argv[optind]);
152
153 if (dir)
154 lsdir(buf, st.st_size, dir, recurse);
155
156 if (file) {
157 - scratch = malloc(SCRATCH_SIZE);
158 - if (scratch == NULL) {
159 - fprintf(stderr, "%s: memory exhausted\n", argv[optind]);
160 - exit(6);
161 - }
162 + scratch = xmalloc(SCRATCH_SIZE);
163
164 catfile(buf, st.st_size, file, scratch, SCRATCH_SIZE, &ssize);
165 free(scratch);