-#include "squid.h"
+/*
+ * 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>
//
// Revision 1.1 2000/09/21 09:44:53 voeckler
// Initial revision
//
-//
-#if (defined(__GNUC__) || defined(__GNUG__)) && !defined(__clang__)
-#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>
int
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;
}
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
fprintf( stderr, "while matching \"%s\" against %s%s\n",
expression, line, buffer );
regfree(&rexp);
- fclose(in);
+ cfgin.close();
return -1;
}
} else {
(int)subs[offset].rm_so,
(int)subs[offset].rm_eo,
line+subs[offset].rm_so );
- cd.base = strdup( line+subs[offset].rm_so );
+ cd.base = xstrdup( line+subs[offset].rm_so );
++offset;
// extract size information
}
}
- fclose(in);
+ cfgin.close();
regfree(&rexp);
return cachedir.size();
}
+