From: dy812@cleveland.Freenet.Edu (Doug Araya)

This code is for letting clan leaders be able to guild/unguild their
members, so that immortals are not always needed to do it.

Change the level needed to use "join" in interp.c
Then in the actual join_guild, or do_join, or whatever it is add a check
if(!IS_IMMORTAL(ch) || !IS_SET(ch->act,PLR_LEADER) )
 {
 send_to_char("You aren't a Clan Leader.\n\r",ch); 
 return; 
 }

Then add a little check to be sure the Leader is only able to unjoin
people that belong to his/her guild.
/* for unjoining */
if(IS_SET(victim->guild,which) )
 {
 if(ch->guild != victim->guild )
  {
   send_to_char("You cannot remove players from other guilds.\n\r",ch);
   return; 
  }
 REMOVE_BIT(victim->guild,which); 
 send_to_char("Player has been removed from the guild.\n\r",ch);
 etc...
 etc..
 etc...

Then just a little function to make a player a guild leader:
void do_cleader(CHAR_DATA *ch, char *argument)
 {
 CHAR_DATA *victim; 
 
 if(IS_NPC(ch)) return; 

 if(argument[0] == '\0')
 {
 send_to_char("Syntax: CLEADER <player name>\n\r",ch); 
 return; 
 }

 if((victim == get_char_world(ch,argument)) == NULL )
 {
 send_to_char("They aren't logged in!\n\r",ch); 
 return; 
 } 

 if(IS_SET(victim->act,ACT_LEADER)
 {
 REMOVE_BIT(victim->act,ACT_LEADER); 
 send_to_char("You are no longer a clan leader.\n\r",victim); 
 send_to_char("Player is no longer a clan leader.\n\r",ch);
 return; 
 }  
 SET_BIT(victim->act,ACT_LEADER); 
 send_to_char("You are now a clan leader.\n\r",victim); 
 send_to_char("Player flagged as a clan leader.\n\r",ch); 
 return; 
 }

Whiplash @ SOH