Код переписан в соответствии с c99.