From dd4d20ad1a3970752a4fe81c95c164bf751c0f16 Mon Sep 17 00:00:00 2001 From: reinelt Date: Tue, 9 Sep 2003 06:54:43 +0000 Subject: [lcd4linux @ 2003-09-09 06:54:43 by reinelt] new function 'cfg_number()' git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@233 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- Crystalfontz.c | 20 ++++++++++++-------- Cwlinux.c | 22 +++++++++++----------- HD44780.c | 40 ++++++++++++++-------------------------- M50530.c | 18 ++++++------------ MatrixOrbital.c | 31 ++++++++++++++----------------- PalmPilot.c | 18 +++++++++++------- Raster.c | 7 +++++-- USBLCD.c | 16 ++++++---------- XWindow.c | 9 +++++++-- cfg.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++------ cfg.h | 9 ++++++++- filter.c | 11 +++++++---- lcd4linux.c | 13 ++++++------- parport.c | 17 ++++++----------- processor.c | 25 ++++++++++++++----------- 15 files changed, 177 insertions(+), 135 deletions(-) diff --git a/Crystalfontz.c b/Crystalfontz.c index 8e11d35..5b4fe6f 100644 --- a/Crystalfontz.c +++ b/Crystalfontz.c @@ -1,4 +1,4 @@ -/* $Id: Crystalfontz.c,v 1.13 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: Crystalfontz.c,v 1.14 2003/09/09 06:54:43 reinelt Exp $ * * driver for display modules from Crystalfontz * @@ -19,6 +19,9 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Log: Crystalfontz.c,v $ + * Revision 1.14 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.13 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -145,7 +148,7 @@ static int CF_backlight (void) char buffer[3]; int backlight; - backlight=atoi(cfg_get("Backlight","0")); + if (cfg_number("Backlight", 0, 0, 100, &backlight)<0) return -1; snprintf (buffer, 3, "\016%c", backlight); CF_write (buffer, 2); return 0; @@ -157,7 +160,7 @@ static int CF_contrast (void) char buffer[3]; int contrast; - contrast=atoi(cfg_get("Contrast","50")); + if (cfg_number("Contrast", 50, 0, 100, &contrast)<0) return -1; snprintf (buffer, 3, "\017%c", contrast); CF_write (buffer, 2); return 0; @@ -192,7 +195,7 @@ static int CF_clear (int full) static int CF_init (LCD *Self) { char *port; - char *speed; + int speed; Lcd=*Self; @@ -216,9 +219,10 @@ static int CF_init (LCD *Self) } Port=strdup(port); - speed=cfg_get("Speed","19200"); - switch (atoi(speed)) { + if (cfg_number("Speed", 19200, 1200,19200, &speed)<0) return -1; + + switch (speed) { case 1200: Speed=B1200; break; @@ -232,11 +236,11 @@ static int CF_init (LCD *Self) Speed=B19200; break; default: - error ("Crystalfontz: unsupported speed '%s' in %s", speed, cfg_source()); + error ("Crystalfontz: unsupported speed '%d' in %s", speed, cfg_source()); return -1; } - debug ("using port %s at %d baud", Port, atoi(speed)); + debug ("using port %s at %d baud", Port, speed); Device=CF_open(); if (Device==-1) return -1; diff --git a/Cwlinux.c b/Cwlinux.c index bd61317..affffc9 100644 --- a/Cwlinux.c +++ b/Cwlinux.c @@ -1,4 +1,4 @@ -/* $Id: Cwlinux.c,v 1.12 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: Cwlinux.c,v 1.13 2003/09/09 06:54:43 reinelt Exp $ * * driver for Cwlinux serial display modules * @@ -20,6 +20,9 @@ * * * $Log: Cwlinux.c,v $ + * Revision 1.13 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.12 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -242,10 +245,8 @@ static void CW_Brightness(void) { int level; char cmd[5]="\376A_\375"; - - level=atoi(cfg_get("Brightness","8")); - if (level<0) level=0; - if (level>8) level=8; + + if (cfg_number("Brightness", 8, 0, 8, &level)<0) return; switch (level) { case 0: @@ -268,7 +269,7 @@ static void CW_Brightness(void) int CW_init(LCD * Self) { char *port; - char *speed; + int speed; // char buffer[16]; Lcd = *Self; @@ -293,9 +294,8 @@ int CW_init(LCD * Self) } Port = strdup(port); - speed = cfg_get("Speed","19200"); - - switch (atoi(speed)) { + if (cfg_number("Speed", 19200, 9600,19200, &speed)<0) return -1; + switch (speed) { case 9600: Speed = B9600; break; @@ -303,11 +303,11 @@ int CW_init(LCD * Self) Speed = B19200; break; default: - error("Cwlinux: unsupported speed '%s' in %s", speed, cfg_source()); + error("Cwlinux: unsupported speed '%d' in %s", speed, cfg_source()); return -1; } - debug("using port %s at %d baud", Port, atoi(speed)); + debug("using port %s at %d baud", Port, speed); Device = CW_open(); if (Device == -1) diff --git a/HD44780.c b/HD44780.c index 5ba2358..0fe36a5 100644 --- a/HD44780.c +++ b/HD44780.c @@ -1,4 +1,4 @@ -/* $Id: HD44780.c,v 1.36 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: HD44780.c,v 1.37 2003/09/09 06:54:43 reinelt Exp $ * * driver for display modules based on the HD44780 chip * @@ -27,6 +27,9 @@ * * * $Log: HD44780.c,v $ + * Revision 1.37 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.36 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -400,7 +403,7 @@ int HD_clear (int full) int HD_init (LCD *Self) { int rows=-1, cols=-1, gpos=-1; - char *s, *e; + char *s; s=cfg_get("Size",NULL); if (s==NULL || *s=='\0') { @@ -411,30 +414,16 @@ int HD_init (LCD *Self) error ("HD44780: bad size '%s'",s); return -1; } - - s=cfg_get ("GPOs",NULL); - if (s==NULL) { - gpos=0; - } - else { - gpos=strtol(s, &e, 0); - if (*e!='\0' || gpos<0 || gpos>8) { - error ("HD44780: bad GPOs '%s' in %s", s, cfg_source()); - return -1; - } - } - s=cfg_get("Controllers", "1"); - Controllers=strtol(s, &e, 0); - if (*e!='\0' || Controllers<1 || Controllers>2) { - error ("HD44780: bad Controllers '%s' in %s, should be '1' or '2'", s, cfg_source()); - return -1; - } + if (cfg_number("GPOs", 0, 0, 8, &gpos)<0) return -1; + info ("HD44780: controlling %d GPO's", gpos); + + if (cfg_number("Controllers", 1, 1, 2, &Controllers)<0) return -1; info ("wiring: using display with %d controllers", Controllers); // current controller Controller=1; - + Self->rows=rows; Self->cols=cols; Self->gpos=gpos; @@ -447,15 +436,14 @@ int HD_init (LCD *Self) error ("HD44780: framebuffer could not be allocated: malloc() failed"); return -1; } - - s=cfg_get("Bits", "8"); - Bits=strtol(s, &e, 0); - if (*e!='\0' || (Bits!=4 && Bits!=8)) { + + if (cfg_number("Bits", 8, 4, 8, &Bits)<0) return -1; + if (Bits!=4 && Bits!=8) { error ("HD44780: bad Bits '%s' in %s, should be '4' or '8'", s, cfg_source()); return -1; } info ("wiring: using %d bit mode", Bits); - + if (Bits==8) { if ((SIGNAL_RS = parport_wire_ctrl ("RS", "AUTOFD"))==0xff) return -1; if ((SIGNAL_RW = parport_wire_ctrl ("RW", "GND") )==0xff) return -1; diff --git a/M50530.c b/M50530.c index 1544a25..0fa506d 100644 --- a/M50530.c +++ b/M50530.c @@ -1,4 +1,4 @@ -/* $Id: M50530.c,v 1.12 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: M50530.c,v 1.13 2003/09/09 06:54:43 reinelt Exp $ * * driver for display modules based on the M50530 chip * @@ -20,6 +20,9 @@ * * * $Log: M50530.c,v $ + * Revision 1.13 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.12 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -179,7 +182,7 @@ int M5_clear (int full) int M5_init (LCD *Self) { int rows=-1, cols=-1, gpos=-1; - char *s, *e; + char *s; s=cfg_get("Size",NULL); if (s==NULL || *s=='\0') { @@ -191,16 +194,7 @@ int M5_init (LCD *Self) return -1; } - s=cfg_get ("GPOs",NULL); - if (s==NULL) { - gpos=0; - } else { - gpos=strtol(s, &e, 0); - if (*e!='\0' || gpos<0 || gpos>8) { - error ("M50530: bad GPOs '%s' in %s", s, cfg_source()); - return -1; - } - } + if (cfg_number("GPOs", 0, 0, 8, &gpos)<0) return -1; Self->rows=rows; Self->cols=cols; diff --git a/MatrixOrbital.c b/MatrixOrbital.c index f27b04a..2c0a193 100644 --- a/MatrixOrbital.c +++ b/MatrixOrbital.c @@ -1,4 +1,4 @@ -/* $Id: MatrixOrbital.c,v 1.36 2003/09/09 05:30:33 reinelt Exp $ +/* $Id: MatrixOrbital.c,v 1.37 2003/09/09 06:54:43 reinelt Exp $ * * driver for Matrix Orbital serial display modules * @@ -20,6 +20,9 @@ * * * $Log: MatrixOrbital.c,v $ + * Revision 1.37 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.36 2003/09/09 05:30:33 reinelt * even more icons stuff * @@ -255,7 +258,7 @@ static int MO_contrast (void) char buffer[4]; int contrast; - contrast=atoi(cfg_get("Contrast","160")); + if (cfg_number("Contrast", 160, 0, 255, &contrast)<0) return -1; snprintf (buffer, 4, "\376P%c", contrast); MO_write (buffer, 3); return 0; @@ -317,7 +320,7 @@ int MO_clear2 (int full) static int MO_init (LCD *Self, int protocol) { char *port; - char *s, *e; + int speed; Lcd=*Self; @@ -341,9 +344,8 @@ static int MO_init (LCD *Self, int protocol) } Port=strdup(port); - s=cfg_get("Speed","19200"); - - switch (atoi(s)) { + if (cfg_number("Speed", 19200, 1200,19200, &speed)<0) return -1; + switch (speed) { case 1200: Speed=B1200; break; @@ -357,28 +359,23 @@ static int MO_init (LCD *Self, int protocol) Speed=B19200; break; default: - error ("MatrixOrbital: unsupported speed '%s' in %s", s, cfg_source()); + error ("MatrixOrbital: unsupported speed '%d' in %s", speed, cfg_source()); return -1; } - - debug ("using port %s at %d baud", Port, atoi(s)); - + + debug ("using port %s at %d baud", Port, speed); + Device=MO_open(); if (Device==-1) return -1; - s=cfg_get("Icons", "0"); - Icons=strtol(s, &e, 0); - if (*e!='\0' || Icons<0 || Icons>8) { - error ("MatrixOrbital: bad Icons '%s' in %s, must be between 0 and 8", s, cfg_source()); - return -1; - } + if (cfg_number("Icons", 0, 0, 8, &Icons)<0) return -1; if (Icons>0) { info ("reserving %d of %d user-defined characters for icons", Icons, CHARS); icon_init(Lcd.rows, Lcd.cols, XRES, YRES, CHARS, Icons, MO_define_char); Self->icons=Icons; Lcd.icons=Icons; } - + bar_init(Lcd.rows, Lcd.cols, XRES, YRES, CHARS-Icons); bar_add_segment( 0, 0,255, 32); // ASCII 32 = blank bar_add_segment(255,255,255,255); // ASCII 255 = block diff --git a/PalmPilot.c b/PalmPilot.c index 7b1a8bb..502374f 100644 --- a/PalmPilot.c +++ b/PalmPilot.c @@ -1,4 +1,4 @@ -/* $Id: PalmPilot.c,v 1.11 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: PalmPilot.c,v 1.12 2003/09/09 06:54:43 reinelt Exp $ * * driver for 3Com Palm Pilot * @@ -20,6 +20,9 @@ * * * $Log: PalmPilot.c,v $ + * Revision 1.12 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.11 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -214,7 +217,8 @@ int Palm_clear (int full) int Palm_init (LCD *Self) { - char *port, *speed, *s; + char *port, *s; + int speed; int rows=-1, cols=-1; int xres=1, yres=-1; @@ -230,9 +234,9 @@ int Palm_init (LCD *Self) } Port=strdup(port); - speed=cfg_get("Speed","19200"); + if (cfg_number("Speed", 19200, 1200,19200, &speed)<0) return -1; - switch (atoi(speed)) { + switch (speed) { case 1200: Speed=B1200; break; @@ -249,11 +253,11 @@ int Palm_init (LCD *Self) Speed=B19200; break; default: - error ("PalmPilot: unsupported speed '%s' in %s", speed, cfg_source()); + error ("PalmPilot: unsupported speed '%d' in %s", speed, cfg_source()); return -1; } - debug ("using port %s at %d baud", Port, atoi(speed)); + debug ("using port %s at %d baud", Port, speed); if (sscanf(s=cfg_get("size","20x4"), "%dx%d", &cols, &rows)!=2 || rows<1 || cols<1) { error ("PalmPilot: bad size '%s'", s); @@ -277,7 +281,7 @@ int Palm_init (LCD *Self) if (rgap<0) rgap=pixel+pgap; if (cgap<0) cgap=pixel+pgap; - border=atoi(cfg_get("border","0")); + if (cfg_number("border", 0, 0, 1000000, &border)<0) return -1; if (pix_init (rows, cols, xres, yres)!=0) { error ("PalmPilot: pix_init(%d, %d, %d, %d) failed", rows, cols, xres, yres); diff --git a/Raster.c b/Raster.c index 631074b..99a63c1 100644 --- a/Raster.c +++ b/Raster.c @@ -1,4 +1,4 @@ -/* $Id: Raster.c,v 1.25 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: Raster.c,v 1.26 2003/09/09 06:54:43 reinelt Exp $ * * driver for raster formats * @@ -20,6 +20,9 @@ * * * $Log: Raster.c,v $ + * Revision 1.26 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.25 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -369,7 +372,7 @@ int Raster_init (LCD *Self) if (rgap<0) rgap=pixel+pgap; if (cgap<0) cgap=pixel+pgap; - border=atoi(cfg_get("border","0")); + if (cfg_number("border", 0, 0, 1000000, &border)<0) return -1; if (sscanf(s=cfg_get("foreground","#102000"), "#%x", &foreground)!=1) { error ("Raster: bad foreground color '%s'", s); diff --git a/USBLCD.c b/USBLCD.c index 54a0c02..bad43a1 100644 --- a/USBLCD.c +++ b/USBLCD.c @@ -1,4 +1,4 @@ -/* $Id: USBLCD.c,v 1.13 2003/09/09 05:30:34 reinelt Exp $ +/* $Id: USBLCD.c,v 1.14 2003/09/09 06:54:43 reinelt Exp $ * * Driver for USBLCD ( see http://www.usblcd.de ) * This Driver is based on HD44780.c @@ -22,6 +22,9 @@ * * * $Log: USBLCD.c,v $ + * Revision 1.14 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.13 2003/09/09 05:30:34 reinelt * even more icons stuff * @@ -224,7 +227,7 @@ int USBLCD_clear (int full) int USBLCD_init (LCD *Self) { int rows=-1, cols=-1 ; - char *port, *s, *e; + char *port, *s; if (Port) { free(Port); @@ -275,13 +278,7 @@ int USBLCD_init (LCD *Self) if (USBLCD_open()!=0) return -1; - s=cfg_get("Icons", "0"); - Icons=strtol(s, &e, 0); - if (*e!='\0' || Icons<0 || Icons>8) { - debug ("Icons=%d e=<%s>", Icons, e); - error ("USBLCD: bad Icons '%s' in %s, must be between 0 and 8", s, cfg_source()); - return -1; - } + if (cfg_number("Icons", 0, 0, 8, &Icons)<0) return -1; if (Icons>0) { info ("reserving %d of %d user-defined characters for icons", Icons, CHARS); icon_init(Lcd.rows, Lcd.cols, XRES, YRES, CHARS, Icons, USBLCD_define_char); @@ -335,7 +332,6 @@ int USBLCD_flush (void) { int row, col, pos1, pos2; int c, equal; - static int junk=0; //Fixme bar_process(USBLCD_define_char); diff --git a/XWindow.c b/XWindow.c index 2902ebf..5ff05a3 100644 --- a/XWindow.c +++ b/XWindow.c @@ -1,4 +1,4 @@ -/* $Id: XWindow.c,v 1.32 2003/07/24 04:48:09 reinelt Exp $ +/* $Id: XWindow.c,v 1.33 2003/09/09 06:54:43 reinelt Exp $ * * X11 Driver for LCD4Linux * @@ -20,6 +20,9 @@ * * * $Log: XWindow.c,v $ + * Revision 1.33 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.32 2003/07/24 04:48:09 reinelt * 'soft clear' needed for virtual rows * @@ -414,7 +417,9 @@ int xlcdinit(LCD *Self) } if (rgap<0) rgap=pixel+pgap; if (cgap<0) cgap=pixel+pgap; - border=atoi(cfg_get("border","0")); + + if (cfg_number("border", 0, 0, 1000000, &border)<0) return -1; + rgbfg=cfg_get("foreground","#000000"); rgbbg=cfg_get("background","#80d000"); rgbhg=cfg_get("halfground","#70c000"); diff --git a/cfg.c b/cfg.c index 708bf59..0689ce6 100644 --- a/cfg.c +++ b/cfg.c @@ -1,4 +1,4 @@ -/* $Id: cfg.c,v 1.15 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: cfg.c,v 1.16 2003/09/09 06:54:43 reinelt Exp $ * * config file stuff * @@ -20,6 +20,9 @@ * * * $Log: cfg.c,v $ + * Revision 1.16 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.15 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -128,12 +131,14 @@ #include "debug.h" #include "cfg.h" + typedef struct { char *key; char *val; int lock; } ENTRY; + static char *Config_File=NULL; static ENTRY *Config=NULL; static int nConfig=0; @@ -156,6 +161,7 @@ static char *strip (char *s, int strip_comments) return s; } + static char *dequote (char *string) { char *s=string; @@ -172,6 +178,7 @@ static char *dequote (char *string) return string; } + static void cfg_add (char *key, char *val, int lock) { int i; @@ -191,6 +198,7 @@ static void cfg_add (char *key, char *val, int lock) Config[i].lock=lock; } + int l4l_cfg_cmd (char *arg) { char *key, *val; @@ -209,6 +217,7 @@ int l4l_cfg_cmd (char *arg) return 0; } + char *l4l_cfg_get (char *key, char *defval) { int i; @@ -221,6 +230,38 @@ char *l4l_cfg_get (char *key, char *defval) return defval; } + +int l4l_cfg_number (char *key, int defval, int min, int max, int *value) +{ + + char *s, *e; + + s=cfg_get(key, NULL); + if (s==NULL) { + *value=defval; + return 0; + } + + *value=strtol(s, &e, 0); + if (*e!='\0') { + error ("bad %s entry '%s' in %s", key, s, cfg_source()); + return -1; + } + + if (*valuemax) { + error ("bad %s value '%s' in %s, maximum is %d", key, s, cfg_source(), max); + return -1; + } + + return 0; +} + + static int check_cfg_source(char *file) { /* as passwords and commands are stored in the config file, @@ -261,6 +302,7 @@ static int check_cfg_source(char *file) return error; } + int l4l_cfg_init (char *file) { FILE *stream; @@ -306,6 +348,7 @@ int l4l_cfg_init (char *file) return 0; } + char *l4l_cfg_source (void) { if (Config_File) @@ -315,8 +358,9 @@ char *l4l_cfg_source (void) } -int (*cfg_init) (char *source) = l4l_cfg_init; -char *(*cfg_source) (void) = l4l_cfg_source; -int (*cfg_cmd) (char *arg) = l4l_cfg_cmd; -char *(*cfg_get) (char *key, char *defval) = l4l_cfg_get; - +int (*cfg_init) (char *source) = l4l_cfg_init; +char *(*cfg_source) (void) = l4l_cfg_source; +int (*cfg_cmd) (char *arg) = l4l_cfg_cmd; +char *(*cfg_get) (char *key, char *defval) = l4l_cfg_get; +int (*cfg_number) (char *key, int defval, + int min, int max, int *value) = l4l_cfg_number; diff --git a/cfg.h b/cfg.h index cb4b86a..fc35a4d 100644 --- a/cfg.h +++ b/cfg.h @@ -1,4 +1,4 @@ -/* $Id: cfg.h,v 1.4 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: cfg.h,v 1.5 2003/09/09 06:54:43 reinelt Exp $ * * config file stuff * @@ -20,6 +20,9 @@ * * * $Log: cfg.h,v $ + * Revision 1.5 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.4 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -47,10 +50,14 @@ extern int (*cfg_init) (char *source); extern char *(*cfg_source) (void); extern int (*cfg_cmd) (char *arg); extern char *(*cfg_get) (char *key, char *defval); +extern int (*cfg_number) (char *key, int defval, + int min, int max, int *value); int l4l_cfg_init (char *file); char *l4l_cfg_source (void); int l4l_cfg_cmd (char *arg); char *l4l_cfg_get (char *key, char *defval); +int l4l_cfg_number (char *key, int defval, + int min, int max, int *value); #endif diff --git a/filter.c b/filter.c index 32af53d..a9aa8af 100644 --- a/filter.c +++ b/filter.c @@ -1,4 +1,4 @@ -/* $Id: filter.c,v 1.6 2003/02/22 07:53:10 reinelt Exp $ +/* $Id: filter.c,v 1.7 2003/09/09 06:54:43 reinelt Exp $ * * smooth and damp functions * @@ -20,6 +20,9 @@ * * * $Log: filter.c,v $ + * Revision 1.7 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.6 2003/02/22 07:53:10 reinelt * cfg_get(key,defval) * @@ -138,9 +141,9 @@ double damp(char *name, double value) double max; int i, j; - if (tau==-1) - tau=atoi(cfg_get("tau","500")); - + if (tau==-1) + if (cfg_number("tau", 500, 0, 1000000, &tau)<0) tau=0.0; + if (tau==0.0) return value; diff --git a/lcd4linux.c b/lcd4linux.c index 400fdd0..a95d148 100644 --- a/lcd4linux.c +++ b/lcd4linux.c @@ -1,4 +1,4 @@ -/* $Id: lcd4linux.c,v 1.45 2003/09/09 05:30:34 reinelt Exp $ +/* $Id: lcd4linux.c,v 1.46 2003/09/09 06:54:43 reinelt Exp $ * * LCD4Linux * @@ -20,6 +20,9 @@ * * * $Log: lcd4linux.c,v $ + * Revision 1.46 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.45 2003/09/09 05:30:34 reinelt * even more icons stuff * @@ -241,6 +244,7 @@ char *release="LCD4Linux " VERSION " (c) 2003 Michael Reinelt "; char **my_argv; +int tick; int got_signal=0; extern char* output; @@ -321,9 +325,7 @@ int main (int argc, char *argv[]) { char *cfg="/etc/lcd4linux.conf"; char *driver; - char *s, *e; int c; - int tick; int quiet=0; // save arguments for restart @@ -466,10 +468,7 @@ int main (int argc, char *argv[]) signal(SIGQUIT, handler); signal(SIGTERM, handler); - s=cfg_get("tick", "100"); - tick=strtol(s, &e, 0); - if (*e!='\0' || tick<0) { - error ("bad tick entry '%s' in %s", s, cfg_source()); + if (cfg_number("Tick", 100, 1, 1000000, &tick)<0) { pid_exit(PIDFILE); exit (1); } diff --git a/parport.c b/parport.c index 5c9956d..204ba20 100644 --- a/parport.c +++ b/parport.c @@ -1,4 +1,4 @@ -/* $Id: parport.c,v 1.7 2003/08/24 05:17:58 reinelt Exp $ +/* $Id: parport.c,v 1.8 2003/09/09 06:54:43 reinelt Exp $ * * generic parallel port handling * @@ -20,6 +20,9 @@ * * * $Log: parport.c,v $ + * Revision 1.8 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.7 2003/08/24 05:17:58 reinelt * liblcd4linux patch from Patrick Schemitz * @@ -143,17 +146,9 @@ static int PPfd=-1; int parport_open (void) { char *s, *e; - + #ifdef USE_OLD_UDELAY - s=cfg_get ("Delay",NULL); - if (s==NULL || *s=='\0') { - error ("parport: no 'Delay' entry in %s", cfg_source()); - return -1; - } - if ((loops_per_usec=strtol(s, &e, 0))==0 || *e!='\0') { - error ("parport: bad delay '%s' in %s", s, cfg_source()); - return -1; - } + if (cfg_number("Delay", 0, 1, 1000000000, &loops_per_usec)<0) return -1; #else udelay_init(); #endif diff --git a/processor.c b/processor.c index 67e1129..481c4eb 100644 --- a/processor.c +++ b/processor.c @@ -1,4 +1,4 @@ -/* $Id: processor.c,v 1.39 2003/09/09 05:30:34 reinelt Exp $ +/* $Id: processor.c,v 1.40 2003/09/09 06:54:43 reinelt Exp $ * * main data processing * @@ -20,6 +20,9 @@ * * * $Log: processor.c,v $ + * Revision 1.40 2003/09/09 06:54:43 reinelt + * new function 'cfg_number()' + * * Revision 1.39 2003/09/09 05:30:34 reinelt * even more icons stuff * @@ -769,29 +772,26 @@ void process_init (void) debug ("Display: %d rows, %d columns, %dx%d pixels, %d icons, %d GPOs", rows, cols, xres, yres, icons, gpos); - lines=atoi(cfg_get("Rows","1")); - if (lines<1) { - error ("bad 'Rows' entry in %s, ignoring.", cfg_source()); + if (cfg_number("Rows", 1, 1, 1000, &lines)<0) { lines=1; + error ("ignoring bad 'Rows' value and using '%d'", lines); } if (lines>ROWS) { error ("%d virtual rows exceeds limit, reducing to %d rows", lines, ROWS); lines=ROWS; } if (lines>rows) { - scroll=atoi(cfg_get("Scroll","1")); - if (scroll<1) { - error ("bad 'Scroll' entry in %s, ignoring and using '1'", cfg_source()); + if (cfg_number("Scroll", 1, 1, 1000, &scroll)<0) { scroll=1; + error ("ignoring bad 'Scroll' value and using '%d'", scroll); } if (scroll>rows) { error ("'Scroll' entry in %s is %d, > %d display rows.", cfg_source(), scroll, rows); error ("This may lead to unexpected results!"); } - turn=atoi(cfg_get("Turn","1000")); - if (turn<1) { - error ("bad 'Turn' entry in %s, ignoring and using '1000'", cfg_source()); - turn=1; + if (cfg_number("Turn", 1000, 1, 1000000, &turn)<0) { + turn=1000; + error ("ignoring bad 'Scroll' value and using '%d'", turn); } debug ("Virtual: %d rows, scroll %d lines every %d msec", lines, scroll, turn); } else { @@ -826,6 +826,9 @@ void process (void) char *txt; static int offset=0; + // Fixme: smooth has gone... + int smooth=0; + collect_data(); if (smooth==0 && Turn()) { -- cgit v1.2.3