Skip to content
  • Jonathan Nieder's avatar
    run-command: handle short writes and EINTR in die_child · a111eb78
    Jonathan Nieder authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    If start_command fails after forking and before exec finishes, there
    is not much use in noticing an I/O error on top of that.
    finish_command will notice that the child exited with nonzero status
    anyway.  So as noted in v1.7.0.3~20^2 (run-command.c: fix build
    warnings on Ubuntu, 2010-01-30) and v1.7.5-rc0~29^2 (2011-03-16), it
    is safe to ignore errors from write in this codepath.
    
    Even so, the result from write contains useful information: it tells
    us if the write was cancelled by a signal (EINTR) or was only
    partially completed (e.g., when writing to an almost-full pipe).
    Let's use write_in_full to loop until the desired number of bytes have
    been written (still ignoring errors if that fails).
    
    As a happy side effect, the assignment to a dummy variable to appease
    gcc -D_FORTIFY_SOURCE is no longer needed.  xwrite and write_in_full
    check the return value from write(2).
    
    Noticed with gcc -Wunused-but-set-variable.
    
    Signed-off-by: default avatarJonathan Nieder <jrnieder@gmail.com>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    a111eb78