fbsplash: move to /sbin; small shrink
function old new delta fb_drawprogressbar 413 423 +10 fbsplash_main 1146 1121 -25
This commit is contained in:
parent
c4523c2b3d
commit
a38ba59cc3
@ -149,7 +149,7 @@ USE_EXPR(APPLET(expr, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
|||||||
USE_FAKEIDENTD(APPLET(fakeidentd, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
|
USE_FAKEIDENTD(APPLET(fakeidentd, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
|
||||||
USE_FALSE(APPLET_NOFORK(false, false, _BB_DIR_BIN, _BB_SUID_NEVER, false))
|
USE_FALSE(APPLET_NOFORK(false, false, _BB_DIR_BIN, _BB_SUID_NEVER, false))
|
||||||
USE_FBSET(APPLET(fbset, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
|
USE_FBSET(APPLET(fbset, _BB_DIR_USR_SBIN, _BB_SUID_NEVER))
|
||||||
USE_FBSPLASH(APPLET(fbsplash, _BB_DIR_BIN, _BB_SUID_NEVER))
|
USE_FBSPLASH(APPLET(fbsplash, _BB_DIR_SBIN, _BB_SUID_NEVER))
|
||||||
USE_FDFLUSH(APPLET_ODDNAME(fdflush, freeramdisk, _BB_DIR_BIN, _BB_SUID_NEVER, fdflush))
|
USE_FDFLUSH(APPLET_ODDNAME(fdflush, freeramdisk, _BB_DIR_BIN, _BB_SUID_NEVER, fdflush))
|
||||||
USE_FDFORMAT(APPLET(fdformat, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
USE_FDFORMAT(APPLET(fdformat, _BB_DIR_USR_BIN, _BB_SUID_NEVER))
|
||||||
USE_FDISK(APPLET(fdisk, _BB_DIR_SBIN, _BB_SUID_NEVER))
|
USE_FDISK(APPLET(fdisk, _BB_DIR_SBIN, _BB_SUID_NEVER))
|
||||||
|
@ -95,16 +95,15 @@ static void fb_open(const char *strfb_device)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Draw hollow rectangle on framebuffer
|
* Draw hollow rectangle on framebuffer
|
||||||
* \param nx1pos,ny1pos upper left position
|
|
||||||
* \param nx2pos,ny2pos down right position
|
|
||||||
* \param nred,ngreen,nblue rgb color
|
|
||||||
*/
|
*/
|
||||||
static void fb_drawrectangle(int nx1pos, int ny1pos, int nx2pos, int ny2pos,
|
static void fb_drawrectangle(void)
|
||||||
unsigned char nred, unsigned char ngreen, unsigned char nblue)
|
|
||||||
{
|
{
|
||||||
int cnt;
|
int cnt;
|
||||||
DATA thispix;
|
DATA thispix;
|
||||||
DATA *ptr1, *ptr2;
|
DATA *ptr1, *ptr2;
|
||||||
|
unsigned char nred = G.nbar_colr/2;
|
||||||
|
unsigned char ngreen = G.nbar_colg/2;
|
||||||
|
unsigned char nblue = G.nbar_colb/2;
|
||||||
|
|
||||||
nred >>= 3; // 5-bit red
|
nred >>= 3; // 5-bit red
|
||||||
ngreen >>= 2; // 6-bit green
|
ngreen >>= 2; // 6-bit green
|
||||||
@ -112,18 +111,18 @@ static void fb_drawrectangle(int nx1pos, int ny1pos, int nx2pos, int ny2pos,
|
|||||||
thispix = nblue + (ngreen << 5) + (nred << (5+6));
|
thispix = nblue + (ngreen << 5) + (nred << (5+6));
|
||||||
|
|
||||||
// horizontal lines
|
// horizontal lines
|
||||||
ptr1 = (DATA*)(G.addr + (ny1pos * G.scr_var.xres + nx1pos) * BYTES_PER_PIXEL);
|
ptr1 = (DATA*)(G.addr + (G.nbar_posy * G.scr_var.xres + G.nbar_posx) * BYTES_PER_PIXEL);
|
||||||
ptr2 = (DATA*)(G.addr + (ny2pos * G.scr_var.xres + nx1pos) * BYTES_PER_PIXEL);
|
ptr2 = (DATA*)(G.addr + ((G.nbar_posy + G.nbar_height - 1) * G.scr_var.xres + G.nbar_posx) * BYTES_PER_PIXEL);
|
||||||
cnt = nx2pos - nx1pos;
|
cnt = G.nbar_width - 1;
|
||||||
do {
|
do {
|
||||||
*ptr1++ = thispix;
|
*ptr1++ = thispix;
|
||||||
*ptr2++ = thispix;
|
*ptr2++ = thispix;
|
||||||
} while (--cnt >= 0);
|
} while (--cnt >= 0);
|
||||||
|
|
||||||
// vertical lines
|
// vertical lines
|
||||||
ptr1 = (DATA*)(G.addr + (ny1pos * G.scr_var.xres + nx1pos) * BYTES_PER_PIXEL);
|
ptr1 = (DATA*)(G.addr + (G.nbar_posy * G.scr_var.xres + G.nbar_posx) * BYTES_PER_PIXEL);
|
||||||
ptr2 = (DATA*)(G.addr + (ny1pos * G.scr_var.xres + nx2pos) * BYTES_PER_PIXEL);
|
ptr2 = (DATA*)(G.addr + (G.nbar_posy * G.scr_var.xres + G.nbar_posx + G.nbar_width - 1) * BYTES_PER_PIXEL);
|
||||||
cnt = ny2pos - ny1pos;
|
cnt = G.nbar_posy + G.nbar_height - 1 - G.nbar_posy;
|
||||||
do {
|
do {
|
||||||
*ptr1 = thispix; ptr1 += G.scr_var.xres;
|
*ptr1 = thispix; ptr1 += G.scr_var.xres;
|
||||||
*ptr2 = thispix; ptr2 += G.scr_var.xres;
|
*ptr2 = thispix; ptr2 += G.scr_var.xres;
|
||||||
@ -179,10 +178,7 @@ static void fb_drawprogressbar(unsigned percent)
|
|||||||
if ((height | width) < 0)
|
if ((height | width) < 0)
|
||||||
return;
|
return;
|
||||||
// NB: "width" of 1 actually makes rect with width of 2!
|
// NB: "width" of 1 actually makes rect with width of 2!
|
||||||
fb_drawrectangle(
|
fb_drawrectangle();
|
||||||
left_x, top_y,
|
|
||||||
left_x + width, top_y + height,
|
|
||||||
G.nbar_colr/2, G.nbar_colg/2, G.nbar_colb/2);
|
|
||||||
|
|
||||||
// inner "empty" rectangle
|
// inner "empty" rectangle
|
||||||
left_x++;
|
left_x++;
|
||||||
@ -279,9 +275,10 @@ static void fb_drawimage(void)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse configuration file
|
* Parse configuration file
|
||||||
|
* \param *cfg_filename name of the configuration file
|
||||||
*/
|
*/
|
||||||
static void init(const char *ini_filename)
|
static void init(const char *cfg_filename)
|
||||||
{
|
{
|
||||||
static const char const param_names[] ALIGN1 =
|
static const char const param_names[] ALIGN1 =
|
||||||
"BAR_LEFT\0" "BAR_TOP\0"
|
"BAR_LEFT\0" "BAR_TOP\0"
|
||||||
@ -295,7 +292,7 @@ static void init(const char *ini_filename)
|
|||||||
FILE *inifile;
|
FILE *inifile;
|
||||||
char *buf;
|
char *buf;
|
||||||
|
|
||||||
inifile = xfopen_stdin(ini_filename);
|
inifile = xfopen_stdin(cfg_filename);
|
||||||
|
|
||||||
while ((buf = xmalloc_fgetline(inifile)) != NULL) {
|
while ((buf = xmalloc_fgetline(inifile)) != NULL) {
|
||||||
char *value_str;
|
char *value_str;
|
||||||
@ -361,7 +358,7 @@ static void init(const char *ini_filename)
|
|||||||
int fbsplash_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int fbsplash_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int fbsplash_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
int fbsplash_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
||||||
{
|
{
|
||||||
const char *fb_device, *ini_filename, *fifo_filename;
|
const char *fb_device, *cfg_filename, *fifo_filename;
|
||||||
FILE *fp = fp; // for compiler
|
FILE *fp = fp; // for compiler
|
||||||
bool bCursorOff;
|
bool bCursorOff;
|
||||||
|
|
||||||
@ -369,22 +366,19 @@ int fbsplash_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
|||||||
|
|
||||||
// parse command line options
|
// parse command line options
|
||||||
fb_device = "/dev/fb0";
|
fb_device = "/dev/fb0";
|
||||||
ini_filename = NULL;
|
cfg_filename = NULL;
|
||||||
fifo_filename = NULL;
|
fifo_filename = NULL;
|
||||||
bCursorOff = 1 & getopt32(argv, "cs:d:i:f:",
|
bCursorOff = 1 & getopt32(argv, "cs:d:i:f:",
|
||||||
&G.image_filename, &fb_device, &ini_filename, &fifo_filename);
|
&G.image_filename, &fb_device, &cfg_filename, &fifo_filename);
|
||||||
|
|
||||||
// parse configuration file
|
// parse configuration file
|
||||||
if (ini_filename)
|
if (cfg_filename)
|
||||||
init(ini_filename);
|
init(cfg_filename);
|
||||||
|
|
||||||
// We must have -s IMG
|
// We must have -s IMG
|
||||||
if (!G.image_filename)
|
if (!G.image_filename)
|
||||||
bb_show_usage();
|
bb_show_usage();
|
||||||
|
|
||||||
if (fifo_filename)
|
|
||||||
fp = xfopen_stdin(fifo_filename);
|
|
||||||
|
|
||||||
fb_open(fb_device);
|
fb_open(fb_device);
|
||||||
|
|
||||||
if (fifo_filename && bCursorOff) {
|
if (fifo_filename && bCursorOff) {
|
||||||
@ -394,7 +388,12 @@ int fbsplash_main(int argc ATTRIBUTE_UNUSED, char **argv)
|
|||||||
|
|
||||||
fb_drawimage();
|
fb_drawimage();
|
||||||
|
|
||||||
if (fifo_filename) while (1) {
|
if (!fifo_filename)
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
|
||||||
|
fp = xfopen_stdin(fifo_filename);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
struct stat statbuf;
|
struct stat statbuf;
|
||||||
unsigned num;
|
unsigned num;
|
||||||
char *num_buf;
|
char *num_buf;
|
||||||
|
Loading…
Reference in New Issue
Block a user