mirror of
				https://github.com/containers/podman.git
				synced 2025-10-31 18:08:51 +08:00 
			
		
		
		
	 7864108ff1
			
		
	
	7864108ff1
	
	
	
		
			
			Users are complaining about read/only /var/tmp failing even if TMPDIR=/tmp is set. This PR Fixes: https://github.com/containers/podman/issues/10698 [NO TESTS NEEDED] No way to test this. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package libimage
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"io"
 | |
| 	"io/ioutil"
 | |
| 	"net/http"
 | |
| 	"os"
 | |
| 
 | |
| 	"github.com/pkg/errors"
 | |
| )
 | |
| 
 | |
| // tmpdir returns a path to a temporary directory.
 | |
| func tmpdir() string {
 | |
| 	tmpdir := os.Getenv("TMPDIR")
 | |
| 	if tmpdir == "" {
 | |
| 		tmpdir = "/var/tmp"
 | |
| 	}
 | |
| 
 | |
| 	return tmpdir
 | |
| }
 | |
| 
 | |
| // downloadFromURL downloads an image in the format "https:/example.com/myimage.tar"
 | |
| // and temporarily saves in it $TMPDIR/importxyz, which is deleted after the image is imported
 | |
| func (r *Runtime) downloadFromURL(source string) (string, error) {
 | |
| 	fmt.Printf("Downloading from %q\n", source)
 | |
| 
 | |
| 	outFile, err := ioutil.TempFile(r.systemContext.BigFilesTemporaryDir, "import")
 | |
| 	if err != nil {
 | |
| 		return "", errors.Wrap(err, "error creating file")
 | |
| 	}
 | |
| 	defer outFile.Close()
 | |
| 
 | |
| 	response, err := http.Get(source) // nolint:noctx
 | |
| 	if err != nil {
 | |
| 		return "", errors.Wrapf(err, "error downloading %q", source)
 | |
| 	}
 | |
| 	defer response.Body.Close()
 | |
| 
 | |
| 	_, err = io.Copy(outFile, response.Body)
 | |
| 	if err != nil {
 | |
| 		return "", errors.Wrapf(err, "error saving %s to %s", source, outFile.Name())
 | |
| 	}
 | |
| 
 | |
| 	return outFile.Name(), nil
 | |
| }
 |