~emersion/gyosu

9fd66354a464d67b9f00cbaec4ef4589acaefe13 — Simon Ser 4 months ago 865fbba
Canonicalize -I flags

Without this, decl.Position().Filename will sometimes contain
relative paths. This is an issue because these don't match any
targetMap entry.
1 files changed, 18 insertions(+), 14 deletions(-)

M main.go
M main.go => main.go +18 -14
@@ 373,7 373,7 @@ func main() {

	var cflags []string
	for _, v := range I {
		cflags = append(cflags, "-I", v)
		cflags = append(cflags, "-I", canonicalizeFilename(v))
	}

	cfg, err := cc.NewConfig(runtime.GOOS, runtime.GOARCH, cflags...)


@@ 420,19 420,7 @@ func main() {

		for _, filename := range filenames {
			origFilename := applyFilePrefixMap(filename, filePrefixMap)

			// cc evaluates symlinks
			filename, err := filepath.EvalSymlinks(filename)
			if err != nil {
				log.Fatalf("failed to eval symlinks: %v", err)
			}

			// cc expects absolute paths
			filename, err = filepath.Abs(filename)
			if err != nil {
				log.Fatalf("failed to get absolute path: %v", err)
			}

			filename = canonicalizeFilename(filename)
			targetMap[filename] = origFilename
			sources = append(sources, cc.Source{Name: filename})
		}


@@ 674,3 662,19 @@ func symHref(declMap map[declKey]declData, kind declKind, name string) string {
	anchor := fmt.Sprintf("#%v-%v", kind, name)
	return path + anchor
}

func canonicalizeFilename(filename string) string {
	// cc evaluates symlinks
	filename, err := filepath.EvalSymlinks(filename)
	if err != nil {
		log.Fatalf("failed to eval symlinks: %v", err)
	}

	// cc expects absolute paths
	filename, err = filepath.Abs(filename)
	if err != nil {
		log.Fatalf("failed to get absolute path: %v", err)
	}

	return filename
}