Commit 33ee4118 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

checksrc: detect fopen() for text without the FOPEN_* macros

Follow-up to e8423f9c 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.
parent 3bbcb4b0
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -228,6 +228,15 @@ sub scanfile {
                      "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
        # only alert if previous line ended with a close paren and wasn't a cpp
        # line
+4 −0
Original line number Diff line number Diff line
@@ -4,3 +4,7 @@
      150 Opening ASCII mode data connection for [file] (0.0.0.0,0) (545 bytes)
   * no_proxy=domain1.dom,host.domain2.dom
     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",
+2 −2
Original line number Diff line number Diff line
@@ -756,7 +756,7 @@ curl_off_t VmsRealFileSize(const char * name,
  int ret_stat;
  FILE * file;

  file = fopen(name, "r");
  file = fopen(name, "r"); /* VMS */
  if(file == NULL)
    return 0;

@@ -1385,7 +1385,7 @@ static FILE * vmsfopenread(const char *file, const char *mode) {
  case FAB$C_VAR:
  case FAB$C_VFC:
  case FAB$C_STMCR:
    return fopen(file, "r");
    return fopen(file, "r"); /* VMS */
    break;
  default:
    return fopen(file, "r", "rfm=stmlf", "ctx=stm");
+1 −1
Original line number Diff line number Diff line
 * 'name=@filename,filename2,filename3'
 * 'name=@filename;type=image/gif,filename2,filename3'
 
 No newline at end of file
  file = fopen(name, "r"); /* VMS */
+1 −1
Original line number Diff line number Diff line
@@ -151,7 +151,7 @@ static curl_off_t vms_realfilesize(const char * name,
  int ret_stat;
  FILE * file;

  file = fopen(name, "r");
  file = fopen(name, "r"); /* VMS */
  if(file == NULL) {
    return 0;
  }