sublist->item = PL_strdup(helpMac->item2);
sublist->item = helpMac->item2;
wallet_ReadFromFile    (const char * filename, nsVoidArray*& list, PRBool localFile, PlacementType placement = AT_END) {  /* open input stream */  nsFileSpec dirSpec;  nsresult rv;  if (localFile) {    rv = Wallet_ProfileDirectory(dirSpec);  } else {    rv = Wallet_DefaultsDirectory(dirSpec);  }  if (NS_FAILED(rv)) {    return;  }  nsInputFileStream strm(dirSpec + filename);  if (!strm.is_open()) {    return;  }   /* read in the header */  if (!PL_strcmp(filename, schemaValueFileName)) {    if (!wallet_GetHeader(strm)) {      /* something's wrong -- ignore the file */      strm.close();      return;    }  }  for (;;) {    if (NS_FAILED(wallet_GetLine(strm, &helpMac->item1))) {      /* end of file reached */      break;    }#ifdef AutoCapture    /* Distinguished schema list is a list of single entries, not name/value pairs */    if (!PL_strcmp(filename, distinguishedSchemaFileName)) {      nsVoidArray* dummy = NULL;      wallet_WriteToList(helpMac->item1, helpMac->item1, dummy, list, PR_FALSE, placement);      continue;    }#endif    if (NS_FAILED(wallet_GetLine(strm, &helpMac->item2))) {      /* unexpected end of file reached */      break;    }    if (WALLET_NULL(helpMac->item2)) {      /* the value must have been deleted */      nsVoidArray* dummy = NULL;      wallet_WriteToList(helpMac->item1, helpMac->item2, dummy, list, PR_FALSE, placement);      continue;    }    if (NS_FAILED(wallet_GetLine(strm, &helpMac->item3))) {      /* end of file reached */      nsVoidArray* dummy = NULL;      wallet_WriteToList(helpMac->item1, helpMac->item2, dummy, list, PR_FALSE, placement);      strm.close();      return;    }    if (WALLET_NULL(helpMac->item3)) {      /* just a pair of values, no need for a sublist */      nsVoidArray* dummy = NULL;      wallet_WriteToList(helpMac->item1, helpMac->item2, dummy, list, PR_FALSE, placement);    } else {      /* need to create a sublist and put item2 and item3 onto it */      nsVoidArray * itemList = new nsVoidArray();      if (!itemList) {        break;      }      wallet_Sublist * sublist = new wallet_Sublist;      if (!sublist) {        break;      }      sublist->item = PL_strdup(helpMac->item2);      itemList->AppendElement(sublist);      sublist = new wallet_Sublist;      if (!sublist) {        delete itemList;        break;      }      sublist->item = PL_strdup(helpMac->item3);      itemList->AppendElement(sublist);      /* add any following items to sublist up to next blank line */      for (;;) {        /* get next item for sublist */        if (NS_FAILED(wallet_GetLine(strm, &helpMac->item3))) {          /* end of file reached */          wallet_WriteToList(helpMac->item1, nsnull, itemList, list, PR_FALSE, placement);          strm.close();          return;        }        if (WALLET_NULL(helpMac->item3)) {          /* blank line reached indicating end of sublist */          wallet_WriteToList(helpMac->item1, nsnull, itemList, list, PR_FALSE, placement);          break;        }        /* add item to sublist */        sublist = new wallet_Sublist;        if (!sublist) {          delete itemList;          break;        }        sublist->item = PL_strdup(helpMac->item3);        itemList->AppendElement(sublist);      }    }  }  strm.close();}