2024-11-23 11:29:56 +01:00
|
|
|
package frankenphp
|
|
|
|
|
|
|
|
|
|
// #include "frankenphp.h"
|
2026-02-26 22:34:54 +01:00
|
|
|
// #include "types.h"
|
2024-11-23 11:29:56 +01:00
|
|
|
import "C"
|
|
|
|
|
import (
|
|
|
|
|
"os"
|
|
|
|
|
"strings"
|
|
|
|
|
)
|
|
|
|
|
|
2026-03-04 17:20:24 +01:00
|
|
|
var lengthOfEnv = 0
|
|
|
|
|
|
2026-02-26 22:34:54 +01:00
|
|
|
//export go_init_os_env
|
|
|
|
|
func go_init_os_env(mainThreadEnv *C.zend_array) {
|
2026-03-04 17:20:24 +01:00
|
|
|
fullEnv := os.Environ()
|
|
|
|
|
lengthOfEnv = len(fullEnv)
|
|
|
|
|
|
|
|
|
|
for _, envVar := range fullEnv {
|
2025-03-01 14:45:04 +01:00
|
|
|
key, val, _ := strings.Cut(envVar, "=")
|
2026-03-04 17:20:24 +01:00
|
|
|
zkey := newPersistentZendString(key)
|
|
|
|
|
zStr := newPersistentZendString(val)
|
2026-02-26 22:34:54 +01:00
|
|
|
C.__hash_update_string__(mainThreadEnv, zkey, zStr)
|
2025-03-01 14:45:04 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-23 11:29:56 +01:00
|
|
|
//export go_putenv
|
2026-02-26 22:34:54 +01:00
|
|
|
func go_putenv(name *C.char, nameLen C.int, val *C.char, valLen C.int) C.bool {
|
|
|
|
|
goName := C.GoStringN(name, nameLen)
|
2024-11-23 11:29:56 +01:00
|
|
|
|
2026-02-26 22:34:54 +01:00
|
|
|
if val == nil {
|
|
|
|
|
// If no "=" is present, unset the environment variable
|
|
|
|
|
return C.bool(os.Unsetenv(goName) == nil)
|
2024-11-23 11:29:56 +01:00
|
|
|
}
|
|
|
|
|
|
2026-02-26 22:34:54 +01:00
|
|
|
goVal := C.GoStringN(val, valLen)
|
|
|
|
|
return C.bool(os.Setenv(goName, goVal) == nil)
|
2024-11-23 11:29:56 +01:00
|
|
|
}
|