summaryrefslogtreecommitdiffhomepage
path: root/caddyfile/parse.go
diff options
context:
space:
mode:
Diffstat (limited to 'caddyfile/parse.go')
-rw-r--r--caddyfile/parse.go15
1 files changed, 10 insertions, 5 deletions
diff --git a/caddyfile/parse.go b/caddyfile/parse.go
index 13b23db05..c43c21b31 100644
--- a/caddyfile/parse.go
+++ b/caddyfile/parse.go
@@ -212,7 +212,7 @@ func (p *parser) doImport() error {
// and then use glob to get list of matching filenames
absFile, err := filepath.Abs(p.Dispenser.filename)
if err != nil {
- return p.Errf("Failed to get absolute path of file: %s", p.Dispenser.filename)
+ return p.Errf("Failed to get absolute path of file: %s: %v", p.Dispenser.filename, err)
}
var matches []string
@@ -246,8 +246,8 @@ func (p *parser) doImport() error {
if err != nil {
return err
}
+
var importLine int
- importDir := filepath.Dir(importFile)
for i, token := range newTokens {
if token.Text == "import" {
importLine = token.Line
@@ -260,7 +260,7 @@ func (p *parser) doImport() error {
} else if !filepath.IsAbs(importFile) {
abs = filepath.Join(filepath.Dir(absFile), token.Text)
} else {
- abs = filepath.Join(importDir, token.Text)
+ abs = filepath.Join(filepath.Dir(importFile), token.Text)
}
newTokens[i] = Token{
Text: abs,
@@ -269,6 +269,7 @@ func (p *parser) doImport() error {
}
}
}
+
importedTokens = append(importedTokens, newTokens...)
}
@@ -300,8 +301,12 @@ func (p *parser) doSingleImport(importFile string) ([]Token, error) {
return nil, p.Errf("Could not read tokens while importing %s: %v", importFile, err)
}
- // Tack the filename onto these tokens so errors show the imported file's name
- filename := filepath.Base(importFile)
+ // Tack the file path onto these tokens so errors show the imported file's name
+ // (we use full, absolute path to avoid bugs: issue #1892)
+ filename, err := filepath.Abs(importFile)
+ if err != nil {
+ return nil, p.Errf("Failed to get absolute path of file: %s: %v", p.Dispenser.filename, err)
+ }
for i := 0; i < len(importedTokens); i++ {
importedTokens[i].File = filename
}