From 09f5ecfa470f0cc88fba251d04f790a3e7bf92e8 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Sun, 27 Jul 2008 20:25:29 +0000 Subject: fbset: code shrink function old new delta ss - 33 +33 fbset_main 1968 1844 -124 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/1 up/down: 33/-124) Total: -91 bytes --- util-linux/fbset.c | 44 ++++++++++++++------------------------------ 1 file changed, 14 insertions(+), 30 deletions(-) (limited to 'util-linux/fbset.c') diff --git a/util-linux/fbset.c b/util-linux/fbset.c index ac45fe830..5d360b75e 100644 --- a/util-linux/fbset.c +++ b/util-linux/fbset.c @@ -170,6 +170,14 @@ enum { }; #endif +static void ss(uint32_t *x, uint32_t flag, char *where, const char *what) +{ + if (strstr(where, what)) + *x &= ~flag; + else + *x |= flag; +} + #if ENABLE_FEATURE_FBSET_READMODE static int readmode(struct fb_var_screeninfo *base, const char *fn, const char *mode) @@ -211,46 +219,22 @@ static int readmode(struct fb_var_screeninfo *base, const char *fn, &(base->hsync_len), &(base->vsync_len)); } else if ((p = strstr(buf, "laced "))) { //p += 6; - if (strstr(buf, "false")) { - base->vmode &= ~FB_VMODE_INTERLACED; - } else { - base->vmode |= FB_VMODE_INTERLACED; - } + ss(&base->vmode, FB_VMODE_INTERLACED, buf, "false"); } else if ((p = strstr(buf, "double "))) { //p += 7; - if (strstr(buf, "false")) { - base->vmode &= ~FB_VMODE_DOUBLE; - } else { - base->vmode |= FB_VMODE_DOUBLE; - } + ss(&base->vmode, FB_VMODE_DOUBLE, buf, "false"); } else if ((p = strstr(buf, "vsync "))) { //p += 6; - if (strstr(buf, "low")) { - base->sync &= ~FB_SYNC_VERT_HIGH_ACT; - } else { - base->sync |= FB_SYNC_VERT_HIGH_ACT; - } + ss(&base->sync, FB_SYNC_VERT_HIGH_ACT, buf, "low"); } else if ((p = strstr(buf, "hsync "))) { //p += 6; - if (strstr(buf, "low")) { - base->sync &= ~FB_SYNC_HOR_HIGH_ACT; - } else { - base->sync |= FB_SYNC_HOR_HIGH_ACT; - } + ss(&base->sync, FB_SYNC_HOR_HIGH_ACT, buf, "low"); } else if ((p = strstr(buf, "csync "))) { //p += 6; - if (strstr(buf, "low")) { - base->sync &= ~FB_SYNC_COMP_HIGH_ACT; - } else { - base->sync |= FB_SYNC_COMP_HIGH_ACT; - } + ss(&base->sync, FB_SYNC_COMP_HIGH_ACT, buf, "low"); } else if ((p = strstr(buf, "extsync "))) { //p += 8; - if (strstr(buf, "false")) { - base->sync &= ~FB_SYNC_EXT; - } else { - base->sync |= FB_SYNC_EXT; - } + ss(&base->sync, FB_SYNC_EXT, buf, "false"); } if (strstr(buf, "endmode")) -- cgit v1.2.3