]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - tools/purge/conffile.cc
SourceFormat Enforcement
[thirdparty/squid.git] / tools / purge / conffile.cc
index dadb157040840530d81dfa193447e9eb8f3cf0d1..84cfb4cc93ee60be0f698ba58a9e57402b223365 100644 (file)
@@ -1,13 +1,18 @@
-//
-// $Id: conffile.cc,v 1.1 2000/09/21 09:44:53 voeckler Exp $
-//
-// Author:  Jens-S. Vöckler <voeckler@rvs.uni-hannover.de>
+/*
+ * Copyright (C) 1996-2015 The Squid Software Foundation and contributors
+ *
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
+ */
+
+// Author:  Jens-S. V?ckler <voeckler@rvs.uni-hannover.de>
 //
 // File:    conffile.cc
 //          Fri Sep 15 2000
 //
 // (c) 2000 Lehrgebiet Rechnernetze und Verteilte Systeme
-//          Universität Hannover, Germany
+//          Universit?t Hannover, Germany
 //
 // Permission to use, copy, modify, distribute, and sell this software
 // and its documentation for any purpose is hereby granted without fee,
 // ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 // SOFTWARE.
 //
-// $Log: conffile.cc,v $
 // Revision 1.1  2000/09/21 09:44:53  voeckler
 // Initial revision
 //
-//
-#if defined(__GNUC__) || defined(__GNUG__)
-#pragma implementation
-#endif
 
+#include "squid.h"
 #include "conffile.hh"
+
+#include <cerrno>
+#include <cstdlib>
+#include <cstring>
+#include <fstream>
 #include <sys/types.h>
-#include <errno.h>
 #include <memory.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <regex.h>
 
 int
 readConfigFile( CacheDirVector& cachedir, const char* fn, FILE* debug )
@@ -61,8 +62,8 @@ readConfigFile( CacheDirVector& cachedir, const char* fn, FILE* debug )
 
     // try to open file
     if ( debug ) fprintf( debug, "# trying to open %s\n", fn ? fn : "(null)" );
-    FILE* in = fopen( fn, "r" );
-    if ( in == NULL ) {
+    std::ifstream cfgin(fn);
+    if (!cfgin) {
         fprintf( stderr, "fopen %s: %s\n", fn, strerror(errno) );
         return -1;
     }
@@ -84,7 +85,7 @@ readConfigFile( CacheDirVector& cachedir, const char* fn, FILE* debug )
     regmatch_t subs[8];
     char *s, line[1024];
     CacheDir cd;
-    while ( fgets( line, sizeof(line), in ) ) {
+    while ( cfgin.getline( line, sizeof(line)) ) {
         // FIXME: overly long lines
 
         // terminate line at start of comment
@@ -102,14 +103,15 @@ readConfigFile( CacheDirVector& cachedir, const char* fn, FILE* debug )
                 fprintf( stderr, "while matching \"%s\" against %s%s\n",
                          expression, line, buffer );
                 regfree(&rexp);
-                fclose(in);
+                cfgin.close();
                 return -1;
             }
         } else {
             // match, please record
             memset( &cd, 0, sizeof(cd) );
             if ( debug ) fprintf( debug, "# match from %d-%d on line %s",
-                                      subs[0].rm_so, subs[0].rm_eo, line );
+                                      (int)subs[0].rm_so, (int)subs[0].rm_eo,
+                                      line );
 
             // terminate line after matched expression
             line[ subs[0].rm_eo ] = '\0';
@@ -124,7 +126,8 @@ readConfigFile( CacheDirVector& cachedir, const char* fn, FILE* debug )
                 // new version, disk type at position 2
                 line[ subs[offset].rm_eo ] = '\0';
                 if ( debug ) fprintf( debug, "# match from %d-%d on \"%s\"\n",
-                                          subs[offset].rm_so, subs[offset].rm_eo,
+                                          (int)subs[offset].rm_so,
+                                          (int)subs[offset].rm_eo,
                                           line+subs[offset].rm_so );
                 if ( strcmp( line + subs[offset].rm_so, "ufs" ) == 0 )
                     cd.type = CacheDir::CDT_UFS;
@@ -134,46 +137,51 @@ readConfigFile( CacheDirVector& cachedir, const char* fn, FILE* debug )
                     cd.type = CacheDir::CDT_DISKD;
                 else
                     cd.type = CacheDir::CDT_OTHER;
-                offset++;
+                ++offset;
             }
 
             // extract base directory
             line[ subs[offset].rm_eo ] = '\0';
             if ( debug ) fprintf( debug, "# match from %d-%d on \"%s\"\n",
-                                      subs[offset].rm_so, subs[offset].rm_eo,
+                                      (int)subs[offset].rm_so,
+                                      (int)subs[offset].rm_eo,
                                       line+subs[offset].rm_so );
-            cd.base = strdup( line+subs[offset].rm_so );
-            offset++;
+            cd.base = xstrdup( line+subs[offset].rm_so );
+            ++offset;
 
             // extract size information
             line[ subs[offset].rm_eo ] = '\0';
             if ( debug ) fprintf( debug, "# match from %d-%d on \"%s\"\n",
-                                      subs[offset].rm_so, subs[offset].rm_eo,
+                                      (int)subs[offset].rm_so,
+                                      (int)subs[offset].rm_eo,
                                       line+subs[offset].rm_so );
             cd.size = strtoul( line+subs[offset].rm_so, 0, 10 );
-            offset++;
+            ++offset;
 
             // extract 1st level directories
             line[ subs[offset].rm_eo ] = '\0';
             if ( debug ) fprintf( debug, "# match from %d-%d on \"%s\"\n",
-                                      subs[offset].rm_so, subs[offset].rm_eo,
+                                      (int)subs[offset].rm_so,
+                                      (int)subs[offset].rm_eo,
                                       line+subs[offset].rm_so );
             cd.level[0] = strtoul( line+subs[offset].rm_so, 0, 10 );
-            offset++;
+            ++offset;
 
             // extract 2nd level directories
             line[ subs[offset].rm_eo ] = '\0';
             if ( debug ) fprintf( debug, "# match from %d-%d on \"%s\"\n",
-                                      subs[offset].rm_so, subs[offset].rm_eo,
+                                      (int)subs[offset].rm_so,
+                                      (int)subs[offset].rm_eo,
                                       line+subs[offset].rm_so );
             cd.level[1] = strtoul( line+subs[offset].rm_so, 0, 10 );
-            offset++;
+            ++offset;
 
             cachedir.push_back( cd );
         }
     }
 
-    fclose(in);
+    cfgin.close();
     regfree(&rexp);
     return cachedir.size();
 }
+