ex21 source code and makefile