diff options
author | Ron Yorston <rmy@pobox.com> | 2012-09-07 11:48:25 +0100 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2012-09-07 11:48:25 +0100 |
commit | fecf687cc358883de2da21de33346f0df204c80b (patch) | |
tree | d22c606157926fb659374ae68d55e3a874bacf25 /miscutils | |
parent | b25a7c28a0f684087fa6ccbbc7e265a9cac0f0fa (diff) | |
parent | 6d463de46b418e6c4c8d1397033608f78b33ab21 (diff) | |
download | busybox-w32-fecf687cc358883de2da21de33346f0df204c80b.tar.gz busybox-w32-fecf687cc358883de2da21de33346f0df204c80b.tar.bz2 busybox-w32-fecf687cc358883de2da21de33346f0df204c80b.zip |
Merge branch 'busybox' into merge
Conflicts:
include/libbb.h
shell/ash.c
Diffstat (limited to 'miscutils')
-rw-r--r-- | miscutils/fbsplash.c | 27 | ||||
-rw-r--r-- | miscutils/man.c | 14 | ||||
-rw-r--r-- | miscutils/nandwrite.c | 2 | ||||
-rw-r--r-- | miscutils/time.c | 1 |
4 files changed, 28 insertions, 16 deletions
diff --git a/miscutils/fbsplash.c b/miscutils/fbsplash.c index 988439b25..37ca66559 100644 --- a/miscutils/fbsplash.c +++ b/miscutils/fbsplash.c | |||
@@ -50,6 +50,10 @@ struct globals { | |||
50 | struct fb_var_screeninfo scr_var; | 50 | struct fb_var_screeninfo scr_var; |
51 | struct fb_fix_screeninfo scr_fix; | 51 | struct fb_fix_screeninfo scr_fix; |
52 | unsigned bytes_per_pixel; | 52 | unsigned bytes_per_pixel; |
53 | // cached (8 - scr_var.COLOR.length): | ||
54 | unsigned red_shift; | ||
55 | unsigned green_shift; | ||
56 | unsigned blue_shift; | ||
53 | }; | 57 | }; |
54 | #define G (*ptr_to_globals) | 58 | #define G (*ptr_to_globals) |
55 | #define INIT_G() do { \ | 59 | #define INIT_G() do { \ |
@@ -139,6 +143,9 @@ static void fb_open(const char *strfb_device) | |||
139 | break; | 143 | break; |
140 | } | 144 | } |
141 | 145 | ||
146 | G.red_shift = 8 - G.scr_var.red.length; | ||
147 | G.green_shift = 8 - G.scr_var.green.length; | ||
148 | G.blue_shift = 8 - G.scr_var.blue.length; | ||
142 | G.bytes_per_pixel = (G.scr_var.bits_per_pixel + 7) >> 3; | 149 | G.bytes_per_pixel = (G.scr_var.bits_per_pixel + 7) >> 3; |
143 | 150 | ||
144 | // map the device in memory | 151 | // map the device in memory |
@@ -155,10 +162,13 @@ static void fb_open(const char *strfb_device) | |||
155 | 162 | ||
156 | 163 | ||
157 | /** | 164 | /** |
158 | * Return pixel value of the passed RGB color | 165 | * Return pixel value of the passed RGB color. |
166 | * This is performance critical fn. | ||
159 | */ | 167 | */ |
160 | static unsigned fb_pixel_value(unsigned r, unsigned g, unsigned b) | 168 | static unsigned fb_pixel_value(unsigned r, unsigned g, unsigned b) |
161 | { | 169 | { |
170 | /* We assume that the r,g,b values are <= 255 */ | ||
171 | |||
162 | if (G.bytes_per_pixel == 1) { | 172 | if (G.bytes_per_pixel == 1) { |
163 | r = r & 0xe0; // 3-bit red | 173 | r = r & 0xe0; // 3-bit red |
164 | g = (g >> 3) & 0x1c; // 3-bit green | 174 | g = (g >> 3) & 0x1c; // 3-bit green |
@@ -166,10 +176,17 @@ static unsigned fb_pixel_value(unsigned r, unsigned g, unsigned b) | |||
166 | return r + g + b; | 176 | return r + g + b; |
167 | } | 177 | } |
168 | if (G.bytes_per_pixel == 2) { | 178 | if (G.bytes_per_pixel == 2) { |
169 | r = (r & 0xf8) << 8; // 5-bit red | 179 | // ARM PL110 on Integrator/CP has RGBA5551 bit arrangement. |
170 | g = (g & 0xfc) << 3; // 6-bit green | 180 | // We want to support bit locations like that. |
171 | b = b >> 3; // 5-bit blue | 181 | // |
172 | return r + g + b; | 182 | // First shift out unused bits |
183 | r = r >> G.red_shift; | ||
184 | g = g >> G.green_shift; | ||
185 | b = b >> G.blue_shift; | ||
186 | // Then shift the remaining bits to their offset | ||
187 | return (r << G.scr_var.red.offset) + | ||
188 | (g << G.scr_var.green.offset) + | ||
189 | (b << G.scr_var.blue.offset); | ||
173 | } | 190 | } |
174 | // RGB 888 | 191 | // RGB 888 |
175 | return b + (g << 8) + (r << 16); | 192 | return b + (g << 8) + (r << 16); |
diff --git a/miscutils/man.c b/miscutils/man.c index 236fdcebd..b8b15b83b 100644 --- a/miscutils/man.c +++ b/miscutils/man.c | |||
@@ -129,27 +129,21 @@ static int show_manpage(const char *pager, char *man_filename, int man, int leve | |||
129 | #endif | 129 | #endif |
130 | #if ENABLE_FEATURE_SEAMLESS_XZ | 130 | #if ENABLE_FEATURE_SEAMLESS_XZ |
131 | strcpy(ext, "xz"); | 131 | strcpy(ext, "xz"); |
132 | if (run_pipe(pager, man_filename, man, level)) | 132 | if (run_pipe(pager, filename_with_zext, man, level)) |
133 | return 1; | 133 | return 1; |
134 | #endif | 134 | #endif |
135 | #if ENABLE_FEATURE_SEAMLESS_BZ2 | 135 | #if ENABLE_FEATURE_SEAMLESS_BZ2 |
136 | strcpy(ext, "bz2"); | 136 | strcpy(ext, "bz2"); |
137 | if (run_pipe(pager, man_filename, man, level)) | 137 | if (run_pipe(pager, filename_with_zext, man, level)) |
138 | return 1; | 138 | return 1; |
139 | #endif | 139 | #endif |
140 | #if ENABLE_FEATURE_SEAMLESS_GZ | 140 | #if ENABLE_FEATURE_SEAMLESS_GZ |
141 | strcpy(ext, "gz"); | 141 | strcpy(ext, "gz"); |
142 | if (run_pipe(pager, man_filename, man, level)) | 142 | if (run_pipe(pager, filename_with_zext, man, level)) |
143 | return 1; | 143 | return 1; |
144 | #endif | 144 | #endif |
145 | 145 | ||
146 | #if SEAMLESS_COMPRESSION | 146 | return run_pipe(pager, man_filename, man, level); |
147 | ext[-1] = '\0'; | ||
148 | #endif | ||
149 | if (run_pipe(pager, man_filename, man, level)) | ||
150 | return 1; | ||
151 | |||
152 | return 0; | ||
153 | } | 147 | } |
154 | 148 | ||
155 | int man_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 149 | int man_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
diff --git a/miscutils/nandwrite.c b/miscutils/nandwrite.c index 2ba6e3fe5..c636a5aa2 100644 --- a/miscutils/nandwrite.c +++ b/miscutils/nandwrite.c | |||
@@ -129,7 +129,7 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv) | |||
129 | xmove_fd(tmp_fd, IS_NANDDUMP ? STDOUT_FILENO : STDIN_FILENO); | 129 | xmove_fd(tmp_fd, IS_NANDDUMP ? STDOUT_FILENO : STDIN_FILENO); |
130 | } | 130 | } |
131 | 131 | ||
132 | fd = xopen(argv[0], O_RDWR); | 132 | fd = xopen(argv[0], IS_NANDWRITE ? O_RDWR : O_RDONLY); |
133 | xioctl(fd, MEMGETINFO, &meminfo); | 133 | xioctl(fd, MEMGETINFO, &meminfo); |
134 | 134 | ||
135 | mtdoffset = xstrtou(opt_s, 0); | 135 | mtdoffset = xstrtou(opt_s, 0); |
diff --git a/miscutils/time.c b/miscutils/time.c index 945f15f0d..ffed38632 100644 --- a/miscutils/time.c +++ b/miscutils/time.c | |||
@@ -16,6 +16,7 @@ | |||
16 | //usage: "\n -v Verbose" | 16 | //usage: "\n -v Verbose" |
17 | 17 | ||
18 | #include "libbb.h" | 18 | #include "libbb.h" |
19 | #include <sys/resource.h> /* getrusage */ | ||
19 | 20 | ||
20 | /* Information on the resources used by a child process. */ | 21 | /* Information on the resources used by a child process. */ |
21 | typedef struct { | 22 | typedef struct { |