@@ -505,88 +505,6 @@ func ServeHTTP(responseWriter http.ResponseWriter, request *http.Request) error
505505 return nil
506506}
507507
508- //export go_putenv
509- func go_putenv (str * C.char , length C.int ) C.bool {
510- // Create a byte slice from C string with a specified length
511- s := C .GoBytes (unsafe .Pointer (str ), length )
512-
513- // Convert byte slice to string
514- envString := string (s )
515-
516- // Check if '=' is present in the string
517- if key , val , found := strings .Cut (envString , "=" ); found {
518- if os .Setenv (key , val ) != nil {
519- return false // Failure
520- }
521- } else {
522- // No '=', unset the environment variable
523- if os .Unsetenv (envString ) != nil {
524- return false // Failure
525- }
526- }
527-
528- return true // Success
529- }
530-
531- //export go_getfullenv
532- func go_getfullenv (threadIndex C.uintptr_t ) (* C.go_string , C.size_t ) {
533- thread := phpThreads [threadIndex ]
534-
535- env := os .Environ ()
536- goStrings := make ([]C.go_string , len (env )* 2 )
537-
538- for i , envVar := range env {
539- key , val , _ := strings .Cut (envVar , "=" )
540- k := unsafe .StringData (key )
541- v := unsafe .StringData (val )
542- thread .Pin (k )
543- thread .Pin (v )
544-
545- goStrings [i * 2 ] = C.go_string {C .size_t (len (key )), (* C .char )(unsafe .Pointer (k ))}
546- goStrings [i * 2 + 1 ] = C.go_string {C .size_t (len (val )), (* C .char )(unsafe .Pointer (v ))}
547- }
548-
549- value := unsafe .SliceData (goStrings )
550- thread .Pin (value )
551-
552- return value , C .size_t (len (env ))
553- }
554-
555- //export go_getenv
556- func go_getenv (threadIndex C.uintptr_t , name * C.go_string ) (C.bool , * C.go_string ) {
557- thread := phpThreads [threadIndex ]
558-
559- // Create a byte slice from C string with a specified length
560- envName := C .GoStringN (name .data , C .int (name .len ))
561-
562- // Get the environment variable value
563- envValue , exists := os .LookupEnv (envName )
564- if ! exists {
565- // Environment variable does not exist
566- return false , nil // Return 0 to indicate failure
567- }
568-
569- // Convert Go string to C string
570- val := unsafe .StringData (envValue )
571- thread .Pin (val )
572- value := & C.go_string {C .size_t (len (envValue )), (* C .char )(unsafe .Pointer (val ))}
573- thread .Pin (value )
574-
575- return true , value // Return 1 to indicate success
576- }
577-
578- //export go_sapi_getenv
579- func go_sapi_getenv (threadIndex C.uintptr_t , name * C.go_string ) * C.char {
580- envName := C .GoStringN (name .data , C .int (name .len ))
581-
582- envValue , exists := os .LookupEnv (envName )
583- if ! exists {
584- return nil
585- }
586-
587- return phpThreads [threadIndex ].pinCString (envValue )
588- }
589-
590508//export go_handle_request
591509func go_handle_request (threadIndex C.uintptr_t ) bool {
592510 select {
0 commit comments