strtok --> strsep in framebuffer drivers (part 2)
PATCH 1/1 strtok --> strsep in framebuffer drivers (part 2)
Hello,
I just noticed two framebuffer drivers with strtok calls that somehow passed below my radar (cscope). Patch below converts them, too. And it re-adds "ignore empty tokens" functionalty, which I forgot about the last time. Please apply.
René
drivers/video/amifb.c renamed from linux-2.4.13-pre6/drivers/video/amifb.c +2 -0
@@ -1193,6 +1193,8 @@return 0 ;while (this_opt =strsep (&options,"," )) { +if (!*this_opt) +continue ;if (!strcmp (this_opt,"inverse" )) { amifb_inverse =1 ;fb_invert_cmaps ();
drivers/video/atafb.c renamed from linux-2.4.13-pre6/drivers/video/atafb.c +1 -1
@@ -2899,7 +2899,7 @@if (!options || !*options)return 0 ; -for (this_opt=strtok (options,"," ); this_opt; this_opt=strtok (NULL ,"," )) { +while (this_opt =strsep (&options,"," )) {if (!*this_opt)continue ;if ((temp=get_video_mode (this_opt))) default_par=temp;
drivers/video/aty/atyfb_base.c renamed from linux-2.4.13-pre6/drivers/video/aty/atyfb_base.c +2 -0
@@ -2522,6 +2522,8 @@return 0 ;while (this_opt =strsep (&options,"," )) { +if (!*this_opt) +continue ;if (!strncmp (this_opt,"font:" ,5 )) {char *p;int i;
drivers/video/aty128fb.c renamed from linux-2.4.13-pre6/drivers/video/aty128fb.c +2 -0
@@ -1614,6 +1614,8 @@return 0 ;while (this_opt =strsep (&options,"," )) { +if (!*this_opt) +continue ;if (!strncmp (this_opt,"font:" ,5 )) {char *p;int i;
drivers/video/clgenfb.c renamed from linux-2.4.13-pre6/drivers/video/clgenfb.c +1 -2
@@ -2817,8 +2817,7 @@if (!options || !*options)return 0 ; -for (this_opt =strtok (options,"," ); this_opt !=NULL ; - this_opt =strtok (NULL ,"," )) { +while (this_opt =strsep (&options,"," )) {if (!*this_opt)continue ;DPRINTK ("clgenfb_setup: option '%s'\n" , this_opt);
drivers/video/cyberfb.c renamed from linux-2.4.13-pre6/drivers/video/cyberfb.c +2 -0
@@ -1023,6 +1023,8 @@ }while (this_opt =strsep (&options,"," )) { +if (!*this_opt) +continue ;if (!strcmp (this_opt,"inverse" )) { Cyberfb_inverse =1 ;fb_invert_cmaps ();
drivers/video/radeonfb.c renamed from linux-2.4.13-pre6/drivers/video/radeonfb.c +2 -0
@@ -538,6 +538,8 @@return 0 ;while (this_opt =strsep (&options,"," )) { +if (!*this_opt) +continue ;if (!strncmp (this_opt,"font:" ,5 )) {char *p;int i;
drivers/video/retz3fb.c renamed from linux-2.4.13-pre6/drivers/video/retz3fb.c +2 -0
@@ -1349,6 +1349,8 @@return 0 ;while (this_opt =strsep (&options,"," )) { +if (!*this_opt) +continue ;if (!strcmp (this_opt,"inverse" )) { z3fb_inverse =1 ;fb_invert_cmaps ();
drivers/video/riva/fbdev.c renamed from linux-2.4.13-pre6/drivers/video/riva/fbdev.c +2 -0
@@ -2046,6 +2046,8 @@return 0 ;while (this_opt =strsep (&options,"," )) { +if (!*this_opt) +continue ;if (!strncmp (this_opt,"font:" ,5 )) {char *p;int i;
drivers/video/tdfxfb.c renamed from linux-2.4.13-pre6/drivers/video/tdfxfb.c +2 -0
@@ -2087,6 +2087,8 @@return ;while (this_opt =strsep (&options,"," )) { +if (!*this_opt) +continue ;if (!strcmp (this_opt,"inverse" )) { inverse =1 ;fb_invert_cmaps ();
drivers/video/virgefb.c renamed from linux-2.4.13-pre6/drivers/video/virgefb.c +2 -0
@@ -1086,6 +1086,8 @@return 0 ;while (this_opt =strsep (&options,"," )) { +if (!*this_opt) +continue ;if (!strcmp (this_opt,"inverse" )) { Cyberfb_inverse =1 ;fb_invert_cmaps ();
Quoted 111 lines · René Scharfe
Hello,
I just noticed two framebuffer drivers with strtok calls that somehow passed below my radar (cscope). Patch below converts them, too. And it re-adds "ignore empty tokens" functionalty, which I forgot about the last time. Please apply.
René
diff -Nur
../linux-2.4.13-pre6/drivers/video/amifb.c./drivers/video/amifb.cdrivers/video/amifb.c Tue Oct 23 23:04:03 2001 renamed from linux-2.4.13-pre6/drivers/video/amifb.c Tue Oct 23 22:13:43 2001 +2
-0@@ -1193,6 +1193,8 @@ return 0; while (this_opt = strsep(&options, ",")) { + if (!*this_opt) + continue; if (!strcmp(this_opt, "inverse")) { amifb_inverse = 1; fb_invert_cmaps();diff -Nur
../linux-2.4.13-pre6/drivers/video/atafb.c./drivers/video/atafb.cdrivers/video/atafb.c Tue Oct 23 23:00:59 2001 renamed from linux-2.4.13-pre6/drivers/video/atafb.c Fri Sep 14 01:04:43 2001 +1
-1@@ -2899,7 +2899,7 @@ if (!options || !*options) return 0; - for(this_opt=strtok(options,","); this_opt; this_opt=strtok(NULL,",")) { + while (this_opt = strsep(&options, ",")) { if (!*this_opt) continue; if ((temp=get_video_mode(this_opt))) default_par=temp;diff -Nur
../linux-2.4.13-pre6/drivers/video/aty/atyfb_base.c./drivers/video/aty/atyfb_base.cdrivers/video/aty/atyfb_base.c Tue Oct 23 23:05:24 2001 renamed from linux-2.4.13-pre6/drivers/video/aty/atyfb_base.c Tue Oct 23 22:13:43 2001 +2
-0@@ -2522,6 +2522,8 @@ return 0; while (this_opt = strsep(&options, ",")) { + if (!*this_opt) + continue; if (!strncmp(this_opt, "font:", 5)) { char *p; int i;diff -Nur
../linux-2.4.13-pre6/drivers/video/aty128fb.c./drivers/video/aty128fb.cdrivers/video/aty128fb.c Tue Oct 23 23:06:17 2001 renamed from linux-2.4.13-pre6/drivers/video/aty128fb.c Tue Oct 23 22:13:43 2001 +2
-0@@ -1614,6 +1614,8 @@ return 0; while (this_opt = strsep(&options, ",")) { + if (!*this_opt) + continue; if (!strncmp(this_opt, "font:", 5)) { char *p; int i;diff -Nur
../linux-2.4.13-pre6/drivers/video/clgenfb.c./drivers/video/clgenfb.cdrivers/video/clgenfb.c Tue Oct 23 22:59:38 2001 renamed from linux-2.4.13-pre6/drivers/video/clgenfb.c Wed Oct 10 00:13:02 2001 +1
-2@@ -2817,8 +2817,7 @@ if (!options || !*options) return 0; - for (this_opt = strtok (options, ","); this_opt != NULL; - this_opt = strtok (NULL, ",")) { + while (this_opt = strsep (&options, ",")) { if (!*this_opt) continue; DPRINTK("clgenfb_setup: option '%s'\n", this_opt);diff -Nur
../linux-2.4.13-pre6/drivers/video/cyberfb.c./drivers/video/cyberfb.cdrivers/video/cyberfb.c Tue Oct 23 23:07:42 2001 renamed from linux-2.4.13-pre6/drivers/video/cyberfb.c Tue Oct 23 22:13:43 2001 +2
-0@@ -1023,6 +1023,8 @@ } while (this_opt = strsep(&options, ",")) { + if (!*this_opt) + continue; if (!strcmp(this_opt, "inverse")) { Cyberfb_inverse = 1; fb_invert_cmaps();diff -Nur
../linux-2.4.13-pre6/drivers/video/radeonfb.c./drivers/video/radeonfb.cdrivers/video/radeonfb.c Tue Oct 23 23:09:58 2001 renamed from linux-2.4.13-pre6/drivers/video/radeonfb.c Tue Oct 23 22:13:43 2001 +2
-0@@ -538,6 +538,8 @@ return 0; while (this_opt = strsep (&options, ",")) { + if (!*this_opt) + continue; if (!strncmp (this_opt, "font:", 5)) { char *p; int i;diff -Nur
../linux-2.4.13-pre6/drivers/video/retz3fb.c./drivers/video/retz3fb.cdrivers/video/retz3fb.c Tue Oct 23 23:30:56 2001 renamed from linux-2.4.13-pre6/drivers/video/retz3fb.c Tue Oct 23 22:13:43 2001 +2
-0@@ -1349,6 +1349,8 @@ return 0; while (this_opt = strsep(&options, ",")) { + if (!*this_opt) + continue; if (!strcmp(this_opt, "inverse")) { z3fb_inverse = 1; fb_invert_cmaps();diff -Nur
../linux-2.4.13-pre6/drivers/video/riva/fbdev.c./drivers/video/riva/fbdev.c
drivers/video/riva/fbdev.c Tue Oct 23 23:31:33 2001 line 2050
Quoted 5 lines
drivers/video/riva/fbdev.c Tue Oct 23 23:31:33 2001 renamed from linux-2.4.13-pre6/drivers/video/riva/fbdev.c Tue Oct 23 22:13:43 2001 +2
-0@@ -2046,6 +2046,8 @@ return 0; while (this_opt = strsep(&options, ",")) { + if (!*this_opt) + continue;
NAME
strsep - extract token from string
[...]
RETURN VALUE
The strsep() function returns a pointer to the token, or NULL if delim is not found in stringp.
If strsep returns NULL, and you dereference it -> Oops.
! if (!this_opt)
continue;
Quoted 9 lines
René Scharfe wrote:
NAME
strsep - extract token from string
[...]
RETURN VALUE
Thestrsep()function returns a pointer to the token, or NULL if delim is not found in stringp.
Quoted 5 lines
If strsep returns NULL, and you dereference it -> Oops.
! if (!this_opt)
continue;
Is that manual page incorrect?
I would think that
strsep() returns NULL when *stringp points to '\0' character
and that if delim is not found in stringp then stringp is just advanced to '\0' character of string (and original *stringp value is returned)
If that is not true, then these all patches are incorrect. Namely last token will be skipped.
Signature · 4 lines
/"\ | Kari
\ / ASCII Ribbon Campaign | Hurtta
X Against HTML Mail |
/ \ |Quoted 19 lines
Quoted 9 lines
René Scharfe wrote:
NAME
strsep - extract token from string
[...]
RETURN VALUE
Thestrsep()function returns a pointer to the token, or NULL if delim is not found in stringp.Quoted 5 lines
If strsep returns NULL, and you dereference it -> Oops.
! if (!this_opt)
continue;Is that manual page incorrect?
I would think that
Quoted 8 lines
strsep()returns NULL when *stringp points to '\0' characterand that if delim is not found in stringp then stringp is just advanced to '\0' character of string (and original *stringp value is returned)
If that is not true, then these all patches are incorrect. Namely last token will be skipped.
Seems that I have also good to talk to mayself....
lib/string.c tells truth.
strsep() returns NULL when *stringp is NULL.
if delim is not found *stringp is set to NULL (and original *stringp value is returned).
Because kernel code claims that
* It returns empty tokens, too, behaving exactly like the libc function
* of that name. In fact, it was stolen from glibc2 and de-fancy-fied.
* Same semantics, slimmer shape. ;)
quoted manual page IS incorrect (at least if it describes glibc2 function.)
Signature · 4 lines
/"\ | Kari
\ / ASCII Ribbon Campaign | Hurtta
X Against HTML Mail |
/ \ |Quoted 1 line · Kari Hurtta
manual page IS incorrect (at least if it describes glibc2 function.)
If you think anything is wrong, write to the manpage maintainer ([email protected]) what you think is wrong and why.
Quoted 6 lines · Kari Hurtta
Quoted 2 lines
manual page IS incorrect (at least if it describes glibc2 function.)
If you think anything is wrong, write to the manpage maintainer ([email protected]) what you think is wrong and why.
I do not know from where that manual page text was quoted.
According of Ren_ Scharfe, man page text is correct on Mandrake 8.
Well, same error is on man page on this system
(Linux Mandrake release 7.1 (helium)).
So is that fixed by distributor (of Mandrake) or is it fixed by manpage maintainer ?
Signature · 4 lines
/"\ | Kari
\ / ASCII Ribbon Campaign | Hurtta
X Against HTML Mail |
/ \ |Quoted 2 lines · Kari Hurtta
Well, same error is on man page on this system
(Linux Mandrake release 7.1 (helium)).
I have no idea what you mean by "same error", but let me repeat: if you think that anything is wrong, then write to the manpage maintainer ([email protected]) and tell him precisely what you think is wrong and why. Vague mutterings on a list like linux-kernel are unlikely to improve anything, if, indeed, improvement is needed.