user = si_GetUser(URLName, PR_TRUE, name);
user = si_GetUser(URLName, PR_FALSE, name);
SINGSIGN_RestoreSignonData (char* URLName, char* name, char** value, PRUint32 elementNumber) {  si_SignonUserStruct* user;  si_SignonDataStruct* data;  /* do nothing if signon preference is not enabled */  if (!si_GetSignonRememberingPref()){    return;  }  si_lock_signon_list();  if (elementNumber == 0) {    si_UserHasBeenSelected = PR_FALSE;  }  /* determine if name has been saved (avoids unlocking the database if not) */  PRBool nameFound = PR_FALSE;  user = si_GetUser(URLName, PR_FALSE, name);  if (user) {    PRInt32 dataCount = LIST_COUNT(user->signonData_list);    for (PRInt32 i=0; i<dataCount; i++) {      data = NS_STATIC_CAST(si_SignonDataStruct*, user->signonData_list->ElementAt(i));      if(name && PL_strcmp(data->name, name)==0) {        nameFound = PR_TRUE;      }    }  }  if (!nameFound) {    si_unlock_signon_list();    return;  }#ifdef xxx  /*   * determine if it is a change-of-password field   *    the heuristic that we will use is that if this is the first   *    item on the form and it is a password, this is probably a   *    change-of-password form   */  /* see if this is first item in form and is a password */  /* get first saved user just so we can see the name of the first item on the form */  user = si_GetUser(URLName, PR_TRUE, NULL); /* this is the first saved user */  if (user) {    SI_LoadSignonData(PR_TRUE); /* this destroys "user" so need to recalculate it */    user = si_GetUser(URLName, PR_TRUE, NULL);    data = (si_SignonDataStruct *) (user->signonData_list->ElementAt(0)); /* 1st item on form */    if(data->isPassword && name && PL_strcmp(data->name, name)==0) {      /* current item is first item on form and is a password */      user = (URLName, MK_SIGNON_PASSWORDS_FETCH);      if (user) {        /* user has confirmed it's a change-of-password form */        PRInt32 dataCount = LIST_COUNT(user->signonData_list);        for (PRInt32 i=1; i<dataCount; i++) {          data = NS_STATIC_CAST(si_SignonDataStruct*, user->signonData_list->ElementAt(i));          if (data->isPassword) {            *value = data->value;            si_unlock_signon_list();            return;          }        }      }    }  }#endif  /* restore the data from previous time this URL was visited */  user = si_GetUser(URLName, PR_FALSE, name);  if (user) {    SI_LoadSignonData(PR_TRUE); /* this destroys user so need to recaculate it */    user = si_GetUser(URLName, PR_TRUE, name);    if (user) { /* this should always be true but just in case */      PRInt32 dataCount = LIST_COUNT(user->signonData_list);      for (PRInt32 i=0; i<dataCount; i++) {        data = NS_STATIC_CAST(si_SignonDataStruct*, user->signonData_list->ElementAt(i));        if(name && PL_strcmp(data->name, name)==0) {          *value = data->value;          si_unlock_signon_list();          return;        }      }    }  }  si_unlock_signon_list();}