En resumen de forma clara:
En C no existe el valor
Boolean como tal. Un valor entero se puede tomar como booleano de forma que
0 = false, y cualquier otro valor es true.
En otras palabras, ahí lo que estás diciendo es "mientras no haya acabado". Y marcarás que ha acabado cuando Done sea distinto de cero.
Suerte