/* CMD_XCOMPAT = 10, */
CMD_ALL = 11,
CMD_INFO = 12,
- CMD_CHANGE = 13,
+ CMD_SHOW = 13,
+ CMD_CHANGE = 14,
#if ENABLE_FEATURE_FBSET_FANCY
CMD_XRES = 100,
{ "vsync" , 1, CMD_VSYNC },
{ "laced" , 1, CMD_LACED },
{ "double" , 1, CMD_DOUBLE },
- { "n" , 0, CMD_CHANGE },
+ { "show" , 0, CMD_SHOW },
+ { "s" , 0, CMD_SHOW },
#if ENABLE_FEATURE_FBSET_FANCY
{ "all" , 0, CMD_ALL },
{ "xres" , 1, CMD_XRES },
*x |= flag;
}
-static int readmode(struct fb_var_screeninfo *base, const char *fn,
+static int read_mode_db(struct fb_var_screeninfo *base, const char *fn,
const char *mode)
{
char *token[2], *p, *s;
{
enum {
OPT_CHANGE = (1 << 0),
- /*OPT_INFO = (1 << 1), ??*/
+ OPT_SHOW = (1 << 1),
OPT_READMODE = (1 << 2),
OPT_ALL = (1 << 9),
};
case CMD_DB:
modefile = argv[1];
break;
+ case CMD_ALL:
+ options |= OPT_ALL;
+ break;
+ case CMD_SHOW:
+ options |= OPT_SHOW;
+ break;
case CMD_GEOMETRY:
varset.xres = xatou32(argv[1]);
varset.yres = xatou32(argv[2]);
varset.hsync_len = xatou32(argv[6]);
varset.vsync_len = xatou32(argv[7]);
break;
- case CMD_ALL:
- options |= OPT_ALL;
- break;
- case CMD_CHANGE:
- options |= OPT_CHANGE;
- break;
#if ENABLE_FEATURE_FBSET_FANCY
case CMD_XRES:
varset.xres = xatou32(argv[1]);
break;
#endif
}
+ switch (g_cmdoptions[i].code) {
+ case CMD_FB:
+ case CMD_DB:
+ case CMD_ALL:
+ case CMD_SHOW:
+ break;
+ default:
+ options |= OPT_CHANGE; /* the other commands imply changes */
+ }
argc -= g_cmdoptions[i].param_count;
argv += g_cmdoptions[i].param_count;
goto contin;
#if !ENABLE_FEATURE_FBSET_READMODE
bb_show_usage();
#else
- if (!readmode(&var, modefile, mode)) {
+ if (!read_mode_db(&var, modefile, mode)) {
bb_error_msg_and_die("unknown video mode '%s'", mode);
}
#endif
}
- setmode(&var, &varset);
if (options & OPT_CHANGE) {
+ setmode(&var, &varset);
if (options & OPT_ALL)
var.activate = FB_ACTIVATE_ALL;
xioctl(fh, FBIOPUT_VSCREENINFO, &var);
}
- showmode(&var);
+ if (options == 0 || options & OPT_SHOW)
+ showmode(&var);
/* Don't close the file, as exiting will take care of that */
/* close(fh); */