$ls ascii-table avg.txt case-changer.c env-var-set functions_ver1.c mph-to-kph_v2.c ascii-table.c avg-with-garbage.txt env-var env-var-set.c functions_ver2.c output.c ascii-table.md case-changer env-var.c exist.sh mph-to-kph.c $cat functions_ver1.c #include <stdio.h> int func1(void); int func2(void); int main(int argc, char *argv[]) { printf("Inside main\n"); printf("Calling function one\n"); if (func1()) { printf("Everything ok from function one\n"); printf("Return with 0 from main - all ok\n"); return 0; } else { printf("Caught an error from function one\n"); printf("Return with 1 from main - error\n"); return 1; } return 0; /* We shouldn't reach this, but just in case */ } int func1(void) { printf("Inside function one\n"); printf("Calling function two\n"); if (func2()) { printf("Everything ok from function two\n"); return 1; } else { printf("Caught an error from function two\n"); return 0; } } int func2(void) { printf("Inside function two\n"); printf("Returning with 0 (error) from " "function two\n"); return 0; } $gcc functions_ver1.c -o functions_ver1.c gcc: fatal error: input file ‘functions_ver1.c’ is the same as output file compilation terminated. $gcc functions_ver1.c -o functions_ver1 $./functions_ver1 Inside main Calling function one Inside function one Calling function two Inside function two Returning with 0 (error) from function two Caught an error from function two Caught an error from function one Return with 1 from main - error $