Permission_Save();
Permission_Save(PR_TRUE);
Permission_Check(     nsIPrompt *aPrompter,     const char * hostname,     PRInt32 type,     PRBool warningPref,     const char * message_string,     int count_for_message){  PRBool permission;  /* try to make decision based on saved permissions */  if (NS_SUCCEEDED(permission_CheckFromList(hostname, permission, type))) {    return permission;  }  /* see if we need to prompt */  if(!warningPref) {    return PR_TRUE;  }  /* we need to prompt */  PRUnichar * message_fmt =      CKutil_Localize(NS_ConvertASCIItoUCS2(message_string).get());  PRUnichar * message = nsTextFormatter::smprintf(message_fmt,                            hostname ? hostname : "", count_for_message);  PRBool rememberChecked = permission_GetRememberChecked(type);  PRUnichar * remember_string = CKutil_Localize(NS_LITERAL_STRING("RememberThisDecision").get());  permission = permission_CheckConfirmYN(aPrompter, message, remember_string, &rememberChecked);  nsTextFormatter::smprintf_free(message);  nsMemory::Free(message_fmt);  /* see if we need to remember this decision */  if (rememberChecked) {    char * hostname2 = NULL;    /* ignore leading periods in host name */    const char * hostnameAfterDot = hostname;    while (hostnameAfterDot && (*hostnameAfterDot == '.')) {      hostnameAfterDot++;    }    CKutil_StrAllocCopy(hostname2, hostnameAfterDot);    Permission_AddHost(hostname2, permission, type, PR_TRUE);  }  if (rememberChecked != permission_GetRememberChecked(type)) {    permission_SetRememberChecked(type, rememberChecked);    permission_changed = PR_TRUE;    Permission_Save();  }  Recycle(remember_string);  return permission;}