summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--lib/util.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/util.cc b/lib/util.cc
index 74039c6..069590b 100644
--- a/lib/util.cc
+++ b/lib/util.cc
@@ -1,26 +1,27 @@
1#include <sys/types.h> 1#include <sys/types.h>
2#include <sys/stat.h> 2#include <sys/stat.h>
3#include <cassert>
3#include <konforka/util.h> 4#include <konforka/util.h>
4 5
5namespace konforka { 6namespace konforka {
6 7
7 /* 8 /*
8 * XXX: this code is borrowed from sitecing as is, although it should be optimized. 9 * XXX: this code is borrowed from sitecing as is, although it should be optimized.
9 */ 10 */
10 11
11 string normalize_path(const string& p,int o) { 12 string normalize_path(const string& p,int o) {
12 const char *s = p.c_str(); 13 const char *s = p.c_str();
13 if( s[0]=='.' && s[1]=='/' ) 14 if( s[0]=='.' && s[1]=='/' )
14 s += 2; // skip leading './' 15 s += 2; // skip leading './'
15 if(o&strip_leading_slash) 16 if(o&strip_leading_slash)
16 for(;(*s)=='/';s++); 17 for(;(*s)=='/';s++);
17 string rv; 18 string rv;
18 string::size_type notslash = 0; 19 string::size_type notslash = 0;
19 for(;*s;s++) { 20 for(;*s;s++) {
20 if(s[0]=='/') { 21 if(s[0]=='/') {
21 if(s[1]=='/') 22 if(s[1]=='/')
22 continue; // skip duplicate slash 23 continue; // skip duplicate slash
23 if(s[1]=='.' && s[2]=='/') { 24 if(s[1]=='.' && s[2]=='/') {
24 // '/./' sequence encountered 25 // '/./' sequence encountered
25 s += 2; 26 s += 2;
26 continue; 27 continue;