~ubuntu-branches/ubuntu/saucy/golang/saucy

« back to all changes in this revision

Viewing changes to src/pkg/os/exec/exec.go

  • Committer: Package Import Robot
  • Author(s): Ondřej Surý, Ondřej Surý, Michael Stapelberg
  • Date: 2012-06-28 12:14:15 UTC
  • mfrom: (1.1.15)
  • Revision ID: package-import@ubuntu.com-20120628121415-w1b0076ixkarr1ml
[ Ondřej Surý ]
* Imported Upstream version 1.0.2
* Update Vcs fields to reflect new git repository location
* Kill get-orig-source, since 1.0.0, the tarballs can be downloaded
  from webpage

[ Michael Stapelberg ]
* golang-mode: use debian-pkg-add-load-path-item (Closes: #664802)
* Add manpages (Closes: #632964)
* Use updated pt.po from Pedro Ribeiro (Closes: #674958)

Show diffs side-by-side

added added

removed removed

Lines of Context:
204
204
        return pw, nil
205
205
}
206
206
 
 
207
func (c *Cmd) closeDescriptors(closers []io.Closer) {
 
208
        for _, fd := range closers {
 
209
                fd.Close()
 
210
        }
 
211
}
 
212
 
207
213
// Run starts the specified command and waits for it to complete.
208
214
//
209
215
// The returned error is nil if the command runs, has no problems
233
239
        for _, setupFd := range []F{(*Cmd).stdin, (*Cmd).stdout, (*Cmd).stderr} {
234
240
                fd, err := setupFd(c)
235
241
                if err != nil {
 
242
                        c.closeDescriptors(c.closeAfterStart)
 
243
                        c.closeDescriptors(c.closeAfterWait)
236
244
                        return err
237
245
                }
238
246
                c.childFiles = append(c.childFiles, fd)
247
255
                Sys:   c.SysProcAttr,
248
256
        })
249
257
        if err != nil {
 
258
                c.closeDescriptors(c.closeAfterStart)
 
259
                c.closeDescriptors(c.closeAfterWait)
250
260
                return err
251
261
        }
252
262
 
253
 
        for _, fd := range c.closeAfterStart {
254
 
                fd.Close()
255
 
        }
 
263
        c.closeDescriptors(c.closeAfterStart)
256
264
 
257
265
        c.errch = make(chan error, len(c.goroutine))
258
266
        for _, fn := range c.goroutine {
301
309
                }
302
310
        }
303
311
 
304
 
        for _, fd := range c.closeAfterWait {
305
 
                fd.Close()
306
 
        }
 
312
        c.closeDescriptors(c.closeAfterWait)
307
313
 
308
314
        if err != nil {
309
315
                return err