storj.io/minio@v0.0.0-20230509071714-0cbc90f649b1/pkg/ioutil/append-file_nix.go (about) 1 //go:build !windows 2 // +build !windows 3 4 /* 5 * MinIO Cloud Storage, (C) 2018 MinIO, Inc. 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 20 package ioutil 21 22 import ( 23 "io" 24 "os" 25 ) 26 27 // AppendFile - appends the file "src" to the file "dst" 28 func AppendFile(dst string, src string, osync bool) error { 29 flags := os.O_WRONLY | os.O_APPEND | os.O_CREATE 30 if osync { 31 flags = flags | os.O_SYNC 32 } 33 appendFile, err := os.OpenFile(dst, flags, 0666) 34 if err != nil { 35 return err 36 } 37 defer appendFile.Close() 38 39 srcFile, err := os.Open(src) 40 if err != nil { 41 return err 42 } 43 defer srcFile.Close() 44 _, err = io.Copy(appendFile, srcFile) 45 return err 46 }