mirror of
https://github.com/rclone/rclone.git
synced 2025-11-23 21:44:49 +02:00
27 lines
562 B
Go
27 lines
562 B
Go
// Package caller contains functions to examine the call stack.
|
|
package caller
|
|
|
|
import (
|
|
"runtime"
|
|
"strings"
|
|
)
|
|
|
|
// Present looks for functionName in the call stack and return true if found
|
|
//
|
|
// Note that this ignores the caller.
|
|
func Present(functionName string) bool {
|
|
var pcs [48]uintptr
|
|
n := runtime.Callers(3, pcs[:]) // skip runtime.Callers, Present and caller
|
|
frames := runtime.CallersFrames(pcs[:n])
|
|
for {
|
|
f, more := frames.Next()
|
|
if strings.HasSuffix(f.Function, functionName) {
|
|
return true
|
|
}
|
|
if !more {
|
|
break
|
|
}
|
|
}
|
|
return false
|
|
}
|