checksrc: detect fopen() for text without the FOPEN_* macros
Follow-up to e8423f9ce1 with discussionis in
https://github.com/bagder/curl/pull/258
This check scans for fopen() with a mode string without 'b' present, as
it may indicate that an FOPEN_* define should rather be used.
This commit is contained in:
@@ -228,6 +228,15 @@ sub scanfile {
|
|||||||
"use of $2 is banned");
|
"use of $2 is banned");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# scan for use of non-binary fopen without the macro
|
||||||
|
if($l =~ /^(.*\W)fopen\s*\([^"]*\"([^"]*)/) {
|
||||||
|
my $mode = $2;
|
||||||
|
if($mode !~ /b/) {
|
||||||
|
checkwarn($line, length($1), $file, $l,
|
||||||
|
"use of non-binary fopen without FOPEN_* macro");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# check for open brace first on line but not first column
|
# check for open brace first on line but not first column
|
||||||
# only alert if previous line ended with a close paren and wasn't a cpp
|
# only alert if previous line ended with a close paren and wasn't a cpp
|
||||||
# line
|
# line
|
||||||
|
|||||||
@@ -4,3 +4,7 @@
|
|||||||
150 Opening ASCII mode data connection for [file] (0.0.0.0,0) (545 bytes)
|
150 Opening ASCII mode data connection for [file] (0.0.0.0,0) (545 bytes)
|
||||||
* no_proxy=domain1.dom,host.domain2.dom
|
* no_proxy=domain1.dom,host.domain2.dom
|
||||||
Default values are (0,0) initialized by calloc.
|
Default values are (0,0) initialized by calloc.
|
||||||
|
file = fopen(name, "r"); /* VMS */
|
||||||
|
return fopen(file, "r"); /* VMS */
|
||||||
|
return fopen(file, "r", "rfm=stmlf", "ctx=stm");
|
||||||
|
curl_memlog("FILE %s:%d fopen(\"%s\",\"%s\") = %p\n",
|
||||||
|
|||||||
@@ -756,7 +756,7 @@ curl_off_t VmsRealFileSize(const char * name,
|
|||||||
int ret_stat;
|
int ret_stat;
|
||||||
FILE * file;
|
FILE * file;
|
||||||
|
|
||||||
file = fopen(name, "r");
|
file = fopen(name, "r"); /* VMS */
|
||||||
if(file == NULL)
|
if(file == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -1385,7 +1385,7 @@ static FILE * vmsfopenread(const char *file, const char *mode) {
|
|||||||
case FAB$C_VAR:
|
case FAB$C_VAR:
|
||||||
case FAB$C_VFC:
|
case FAB$C_VFC:
|
||||||
case FAB$C_STMCR:
|
case FAB$C_STMCR:
|
||||||
return fopen(file, "r");
|
return fopen(file, "r"); /* VMS */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return fopen(file, "r", "rfm=stmlf", "ctx=stm");
|
return fopen(file, "r", "rfm=stmlf", "ctx=stm");
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
* 'name=@filename,filename2,filename3'
|
* 'name=@filename,filename2,filename3'
|
||||||
* 'name=@filename;type=image/gif,filename2,filename3'
|
* 'name=@filename;type=image/gif,filename2,filename3'
|
||||||
|
file = fopen(name, "r"); /* VMS */
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ static curl_off_t vms_realfilesize(const char * name,
|
|||||||
int ret_stat;
|
int ret_stat;
|
||||||
FILE * file;
|
FILE * file;
|
||||||
|
|
||||||
file = fopen(name, "r");
|
file = fopen(name, "r"); /* VMS */
|
||||||
if(file == NULL) {
|
if(file == NULL) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user