if (wallet_GetLine(fp, aItem1) == -1) {
if (wallet_GetLine(fp, aItem1, obscure) == -1) {
wallet_ReadFromFile(char* filename, XP_List*& list, PlacementType placement = DUP_AFTER) {  FILE* fp = fopen(filename, "r");  if (nsnull==fp) {    return;  }  for (;;) {    nsAutoString * aItem1;    if (wallet_GetLine(fp, aItem1) == -1) {      /* end of file reached */      fclose(fp);      return;    }    nsAutoString * aItem2;    if (wallet_GetLine(fp, aItem2) == -1) {      /* unexpected end of file reached */      delete aItem1;      fclose(fp);      return;    }    nsAutoString * aItem3;    if (wallet_GetLine(fp, aItem3) == -1) {      /* end of file reached */      XP_List* dummy = NULL;      wallet_WriteToList(*aItem1, *aItem2, dummy, list, placement);      fclose(fp);      return;    }    if (aItem3->Length()==0) {      /* just a pair of values, no need for a sublist */      XP_List* dummy = NULL;      wallet_WriteToList(*aItem1, *aItem2, dummy, list, placement);    } else {      /* need to create a sublist and put item2 and item3 onto it */      XP_List * itemList = XP_ListNew();      wallet_Sublist * sublist;      sublist = XP_NEW(wallet_Sublist);      sublist->item = new nsAutoString (*aItem2);      XP_ListAddObjectToEnd (itemList, sublist);      delete aItem2;      sublist = XP_NEW(wallet_Sublist);      sublist->item = new nsAutoString (*aItem3);      XP_ListAddObjectToEnd (itemList, sublist);      delete aItem3;      /* add any following items to sublist up to next blank line */      nsAutoString * dummy2 = new nsAutoString("");      for (;;) {        /* get next item for sublist */        if (wallet_GetLine(fp, aItem3) == -1) {          /* end of file reached */          wallet_WriteToList(*aItem1, *dummy2, itemList, list, placement);          fclose(fp);          return;        }        if (aItem3->Length()==0) {          /* blank line reached indicating end of sublist */          wallet_WriteToList(*aItem1, *dummy2, itemList, list, placement);          break;        }        /* add item to sublist */        sublist = XP_NEW(wallet_Sublist);        sublist->item = new nsAutoString (*aItem3);        XP_ListAddObjectToEnd (itemList, sublist);        delete aItem3;      }    }  }}