aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-07-27 21:16:30 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-07-27 21:16:30 +0000
commit8d523cbcd79c5428f1ea5bcbec6b7d9fd3756dc3 (patch)
tree4ca49a28f56a37798fdad1488aab4b570436b7d8
parent09f5ecfa470f0cc88fba251d04f790a3e7bf92e8 (diff)
downloadbusybox-w32-8d523cbcd79c5428f1ea5bcbec6b7d9fd3756dc3.tar.gz
busybox-w32-8d523cbcd79c5428f1ea5bcbec6b7d9fd3756dc3.tar.bz2
busybox-w32-8d523cbcd79c5428f1ea5bcbec6b7d9fd3756dc3.zip
fbset: shrink code a bit more
-rw-r--r--util-linux/fbset.c35
1 files changed, 15 insertions, 20 deletions
diff --git a/util-linux/fbset.c b/util-linux/fbset.c
index 5d360b75e..0ed8fae39 100644
--- a/util-linux/fbset.c
+++ b/util-linux/fbset.c
@@ -170,9 +170,9 @@ enum {
170}; 170};
171#endif 171#endif
172 172
173static void ss(uint32_t *x, uint32_t flag, char *where, const char *what) 173static void ss(uint32_t *x, uint32_t flag, char *buf, const char *what)
174{ 174{
175 if (strstr(where, what)) 175 if (strstr(buf, what))
176 *x &= ~flag; 176 *x &= ~flag;
177 else 177 else
178 *x |= flag; 178 *x |= flag;
@@ -187,8 +187,7 @@ static int readmode(struct fb_var_screeninfo *base, const char *fn,
187 char *p = buf; 187 char *p = buf;
188 188
189 f = xfopen_for_read(fn); 189 f = xfopen_for_read(fn);
190 while (!feof(f)) { 190 while (fgets(buf, sizeof(buf), f)) {
191 fgets(buf, sizeof(buf), f);
192 p = strstr(buf, "mode "); 191 p = strstr(buf, "mode ");
193 if (!p && !(p = strstr(buf, "mode\t"))) 192 if (!p && !(p = strstr(buf, "mode\t")))
194 continue; 193 continue;
@@ -197,13 +196,13 @@ static int readmode(struct fb_var_screeninfo *base, const char *fn,
197 continue; 196 continue;
198 p += strlen(mode); 197 p += strlen(mode);
199 if (!isspace(*p) && (*p != 0) && (*p != '"') 198 if (!isspace(*p) && (*p != 0) && (*p != '"')
200 && (*p != '\r') && (*p != '\n')) 199 && (*p != '\r') && (*p != '\n')
200 ) {
201 continue; /* almost, but not quite */ 201 continue; /* almost, but not quite */
202 }
202 203
203 while (!feof(f)) { 204 while (fgets(buf, sizeof(buf), f)) {
204 fgets(buf, sizeof(buf), f); 205 if ((p = strstr(buf, "geometry "))) {
205 p = strstr(buf, "geometry ");
206 if (p) {
207 p += 9; 206 p += 9;
208 /* FIXME: catastrophic on arches with 64bit ints */ 207 /* FIXME: catastrophic on arches with 64bit ints */
209 sscanf(p, "%d %d %d %d %d", 208 sscanf(p, "%d %d %d %d %d",
@@ -245,22 +244,22 @@ static int readmode(struct fb_var_screeninfo *base, const char *fn,
245} 244}
246#endif 245#endif
247 246
248static inline void setmode(struct fb_var_screeninfo *base, 247static void setmode(struct fb_var_screeninfo *base,
249 struct fb_var_screeninfo *set) 248 struct fb_var_screeninfo *set)
250{ 249{
251 if ((int) set->xres > 0) 250 if ((int32_t) set->xres > 0)
252 base->xres = set->xres; 251 base->xres = set->xres;
253 if ((int) set->yres > 0) 252 if ((int32_t) set->yres > 0)
254 base->yres = set->yres; 253 base->yres = set->yres;
255 if ((int) set->xres_virtual > 0) 254 if ((int32_t) set->xres_virtual > 0)
256 base->xres_virtual = set->xres_virtual; 255 base->xres_virtual = set->xres_virtual;
257 if ((int) set->yres_virtual > 0) 256 if ((int32_t) set->yres_virtual > 0)
258 base->yres_virtual = set->yres_virtual; 257 base->yres_virtual = set->yres_virtual;
259 if ((int) set->bits_per_pixel > 0) 258 if ((int32_t) set->bits_per_pixel > 0)
260 base->bits_per_pixel = set->bits_per_pixel; 259 base->bits_per_pixel = set->bits_per_pixel;
261} 260}
262 261
263static inline void showmode(struct fb_var_screeninfo *v) 262static void showmode(struct fb_var_screeninfo *v)
264{ 263{
265 double drate = 0, hrate = 0, vrate = 0; 264 double drate = 0, hrate = 0, vrate = 0;
266 265
@@ -290,12 +289,8 @@ static inline void showmode(struct fb_var_screeninfo *v)
290 v->blue.length, v->blue.offset, v->transp.length, v->transp.offset); 289 v->blue.length, v->blue.offset, v->transp.length, v->transp.offset);
291} 290}
292 291
293#ifdef STANDALONE
294int main(int argc, char **argv)
295#else
296int fbset_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 292int fbset_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
297int fbset_main(int argc, char **argv) 293int fbset_main(int argc, char **argv)
298#endif
299{ 294{
300 struct fb_var_screeninfo var, varset; 295 struct fb_var_screeninfo var, varset;
301 int fh, i; 296 int fh, i;