*
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*
* This is a from-scratch implementation of fbset; but the de facto fbset
* implementation was a good reference. fbset (original) is released under
#define DEFAULTFBDEV FB_0
#define DEFAULTFBMODE "/etc/fb.modes"
-static const int OPT_CHANGE = (1 << 0);
-static const int OPT_INFO = (1 << 1);
-static const int OPT_READMODE = (1 << 2);
-
enum {
+ OPT_CHANGE = (1 << 0),
+ OPT_INFO = (1 << 1),
+ OPT_READMODE = (1 << 2),
+
CMD_FB = 1,
CMD_DB = 2,
CMD_GEOMETRY = 3,
static unsigned int g_options = 0;
/* Stuff stolen from the kernel's fb.h */
-static const int FBIOGET_VSCREENINFO = 0x4600;
-static const int FBIOPUT_VSCREENINFO = 0x4601;
+enum {
+ FBIOGET_VSCREENINFO = 0x4600,
+ FBIOPUT_VSCREENINFO = 0x4601
+};
struct fb_bitfield {
uint32_t offset; /* beginning of bitfield */
uint32_t length; /* length of bitfield */
};
-const static struct cmdoptions_t {
+static const struct cmdoptions_t {
const char *name;
const unsigned char param_count;
const unsigned char code;
#ifdef CONFIG_FEATURE_FBSET_READMODE
/* taken from linux/fb.h */
-static const int FB_VMODE_INTERLACED = 1; /* interlaced */
-static const int FB_VMODE_DOUBLE = 2; /* double scan */
-static const int FB_SYNC_HOR_HIGH_ACT = 1; /* horizontal sync high active */
-static const int FB_SYNC_VERT_HIGH_ACT = 2; /* vertical sync high active */
-static const int FB_SYNC_EXT = 4; /* external sync */
-static const int FB_SYNC_COMP_HIGH_ACT = 8; /* composite sync high active */
+enum {
+ FB_VMODE_INTERLACED = 1, /* interlaced */
+ FB_VMODE_DOUBLE = 2, /* double scan */
+ FB_SYNC_HOR_HIGH_ACT = 1, /* horizontal sync high active */
+ FB_SYNC_VERT_HIGH_ACT = 2, /* vertical sync high active */
+ FB_SYNC_EXT = 4, /* external sync */
+ FB_SYNC_COMP_HIGH_ACT = 8 /* composite sync high active */
+};
#endif
static int readmode(struct fb_var_screeninfo *base, const char *fn,
const char *mode)
#ifdef STANDALONE
int main(int argc, char **argv)
#else
-extern int fbset_main(int argc, char **argv)
+int fbset_main(int argc, char **argv)
#endif
{
struct fb_var_screeninfo var, varset;
}
}
- if ((fh = open(fbdev, O_RDONLY)) < 0)
- bb_perror_msg_and_die("fbset(open)");
+ fh = bb_xopen(fbdev, O_RDONLY);
if (ioctl(fh, FBIOGET_VSCREENINFO, &var))
bb_perror_msg_and_die("fbset(ioctl)");
if (g_options & OPT_READMODE) {