Permission_Save();
Permission_Save(PR_TRUE);
permission_Unblock(char * host, PRInt32 type) {  /* nothing to do if permission list does not exist */  if(!permission_list) {    return;  }  /* find existing entry for host */  permission_HostStruct * hostStruct;  PRInt32 hostCount = permission_list->Count();  for (PRInt32 hostIndex = 0; hostIndex < hostCount; ++hostIndex) {    hostStruct = NS_STATIC_CAST(permission_HostStruct*, permission_list->ElementAt(hostIndex));    if (hostStruct && PL_strcasecmp(host, hostStruct->host)==0) {      /* host found in list, see if it has an entry for this type */      permission_TypeStruct * typeStruct;      PRInt32 typeCount = hostStruct->permissionList->Count();      for (PRInt32 typeIndex=0; typeIndex<typeCount; typeIndex++) {        typeStruct = NS_STATIC_CAST          (permission_TypeStruct*, hostStruct->permissionList->ElementAt(typeIndex));        if (typeStruct && typeStruct->type == type) {          /* type found.  Remove the permission if it is PR_FALSE */          if (typeStruct->permission == PR_FALSE) {            hostStruct->permissionList->RemoveElementAt(typeIndex);            /* if no more types are present, remove the entry */            typeCount = hostStruct->permissionList->Count();            if (typeCount == 0) {              PR_FREEIF(hostStruct->permissionList);              permission_list->RemoveElementAt(hostIndex);              PR_FREEIF(hostStruct->host);              PR_Free(hostStruct);            }            permission_changed = PR_TRUE;            Permission_Save();            return;          }          break;        }      }      break;    }  }  return;}