chanprog.c: In function ‘isowner’:
chanprog.c:671: warning: the address of ‘owner’ will always evaluate as ‘true’
if (!owner || !name)
return 0;
makes no sense. it will always evaluate true, since owner is extern char owner[]. Perhaps insted just check
if (!name)
return 0;